面试题

作者: 女王大人heheh | 来源:发表于2015-11-11 12:02 被阅读56次

sizeof 和strlen的区别


举例2015-11-11 上午11.05.13.png

1.首先,sizeof()是用来计算字符串或其他对象所占内存的字节数;char a[40];在创建字符数组a的时候就给a分配了40*sizeof(char)的字节内存;
2.strlen(),就是计算当前字符串的长度并返回包括\0;


do while 和while do 的区别

while语句是先测试条件再执行语句,条件不符后终止
do while语句是先执行语句再测试条件,条件不符后终止,所以do while循环至少执行一次


property中属性retain,copy,assign的含义分别是什么?有什么区别?有什么主意事项?

@property是属性的属性设置分三类

retain,copy,assign属于其中语义设置类

1.assign:使用 assign声明属性对应的实例变量存取器方法的实现,是在方法里直接赋值、取值‘并没有操作内存里的引用计数。一般用来将基本数据的属性特征声明为assign

  1. reatain:使用 reatain声明的属性对应的实例变量存取器方法的实现,内部会坐内存优化处理:修改对象的引用计数
  2. copy:使用copy 实名的属性对应的实例变量存取器方法的实现,内部会坐内存优化处理:将对象拷贝一份,然后修改新对象的引用计数(区分深拷贝和浅拷贝)

一般情况下,将OC中的对象声明为retain或者copy特性

如果属性是 对象类型( 如int,float等)属性的语义设置使用assign。
如果属性是对象类型( 如NSStrng、NSArray等)属性的语义设
置使用 retain。
如果属性是对象类型并且想得到参数的copy,使用 copy关键字。

屏幕快照 2015-11-11 上午11.31.02.png

# import和# include有什么区别,@class呢?#improt<>和#improt" "呢?

http://blog.csdn.net/jiangwei0910410003/article/details/41774747


一.import和# include的区别

当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误。
但是使用两次#import的话,不会报错,所以他可以解决重复导入的问题,他会做一次判断,如果已经导入一次就不导入了。

二、关键字@class的作用

在来看一下OC中的关键字@class的作用,在看他的作用之前,先来看一个问题:
现在有一个课程类Classes和学生类Student,他们两之间需要相互引用(导入)。直接看代码比较直接:
Classes.h
[objc] view plaincopy
//
// Classes.h
// 08_@class
//
// Created by jiangwei on 14-10-11.
// Copyright (c) 2014年 jiangwei. All rights reserved.
//

#import <Foundation/Foundation.h>

#import "Student.h"

//不会将Student.h拷贝过来,只是告诉编译器Student这个类在别的地方中有定义,这样就不知道这个类中任何信息(哪些属性和方法)
//@class Student;

@interface Classes : NSObject{

@public
Student *_student;
}

  • (void)t1;

@end
导入Student.h头文件

Classes.m
[objc] view plaincopy在CODE上查看代码片派生到我的代码片
//
// Classes.m
// 08_@class
//
// Created by jiangwei on 14-10-11.
// Copyright (c) 2014年 jiangwei. All rights reserved.
//

#import "Classes.h"

//#import "Student.h"

@implementation Classes

  • (void)t1{
    [_student work];
    }

@end

在来看一下Student类
Student.h
[objc] view plaincopy在CODE上查看代码片派生到我的代码片
// Student.h
// 08_@class
//
// Created by jiangwei on 14-10-11.
// Copyright (c) 2014年 jiangwei. All rights reserved.
//

#import <Foundation/Foundation.h>

import "Classes.h"

@interface Student : NSObject{
Classes *_classes;
}

  • (void)work;

@end
同样的也导入Classes.h头文件

Student.m
[objc] view plaincopy在CODE上查看代码片派生到我的代码片
//
// Student.m
// 08_@class
//
// Created by jiangwei on 14-10-11.
// Copyright (c) 2014年 jiangwei. All rights reserved.
//

#import "Student.h"

@implementation Student

  • (void)work{
    NSLog(@"work");
    }

@end

在来看一下测试代码:
main.m
[objc] view plaincopy在CODE上查看代码片派生到我的代码片
//
// main.m
// 08_@class
//
// Created by jiangwei on 14-10-11.
// Copyright (c) 2014年 jiangwei. All rights reserved.
//

import <Foundation/Foundation.h>

import "Classes.h"

import "Student.h"

//Classes和Student相互导入会出现问题
//这时候我们就可以使用@class解决这样的问题
//我们一般在.h文件中使用@class,因为在.h文件中一般是不会使用类的属性和方法的
//在.m文件中可以导入.h文件
int main(int argc, const charchar * argv[]) {
@autoreleasepool {
Classes *cls =[[Classes alloc] init];
Student *stu = [[Student alloc] init];
cls->_student = stu;
[cls t1];

}  
return 0;  

}
这里有一个问题注意一下:我们看到了这里是如何使用Classes中的属性_student的,因为在Classes类中属性_student是@public的,所以可以直接使用,用的是箭头符号,和C/C++中的指针变量调用差不多。记住了,这里就说到了如何直接访问一个类中的@public修饰符的属性变量


#improt<>和#improt" "

#improt<>表示引入的系统头文件

#improt" "表示引入自定义头文件

相关文章

  • 面试材料

    面试经验 面试题1 面试题2 面试题3 面试题4 面试题5 面试题6――数据结构 面试题7――网络 面试题8――汇...

  • 高阶面试题

    webpack面试题 面试题:webpack插件 Git面试题 面试题:git常用命令 面试题:解决冲突 面试题:...

  • this的指向的面试题

    面试题1 面试题2 面试题3 面试题4

  • 面试所涉及的问题

    面试题参考1 : 面试题 面试题参考2 : 内存管理 面试题参考3 :面试题 ...

  • Android超实用最全面试大纲(三)

    文章目录: ANR面试题 OOM面试题 Bitmap面试题 UI卡顿面试题 内存泄漏面试题 内存管理面试题 一、A...

  • Android最全面试大纲(三)

    文章目录: ANR面试题 OOM面试题 Bitmap面试题 UI卡顿面试题 内存泄漏面试题 内存管理面试题 一、A...

  • 2022年web前端面试题

    web前端面试题分为:html/css面试题、javascript面试题、vue面试题、性能优化面试题、网络方面面...

  • ios面试题

    初级面试题 中级面试题 高级面试题 swift篇

  • Android超实用最全面试大纲(四)

    文章目录: 冷启动和热启动面试题 其他优化面试题 架构模式面试题 插件化面试题 热更新面试题 进程保活面试题 Li...

  • Android最全面试大纲(四)

    文章目录: 冷启动和热启动面试题 其他优化面试题 架构模式面试题 插件化面试题 热更新面试题 进程保活面试题 Li...

网友评论

      本文标题:面试题

      本文链接:https://www.haomeiwen.com/subject/hflchttx.html