美文网首页
# 谁说iOS基础不重要

# 谁说iOS基础不重要

作者: 曼谷第一开膛手 | 来源:发表于2018-04-28 16:16 被阅读39次
1.#import 跟 #include、@class有什么区别?#import<> 跟 #import""又什么区别?
  1. import和#include都能完整地包含某个文件的内容,#import能防止同一个文件被包含多次
  2. @class仅仅是声明一个类名,并不会包含类的完整声明;@class还能解决循环包含的问题
  3. import <> 用来包含系统自带的文件,#import “”用来包含自定义的文件
2.属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?
  1. readwrite:同时生成get方法和set方法的声明和实现
  2. readonly:只生成get方法的声明和实现
  3. assign:set方法的实现是直接赋值,用于基本数据类型
  4. retain:set方法的实现是release旧值,retain新值,用于OC对象类型
  5. copy:set方法的实现是release旧值,copy新值,用于NSString、block等类型
  6. nonatomic:非原子性,set方法的实现不加锁,不安全,性能高(atomic性能低,atomic通过锁定机制来确保其原子性,但只是读/写安全,不能绝对保证线程的安全,当多线程同时访问的时候,会造成线程不安全。可以使用线程锁来保证线程的安全。)
3. 写一个setter方法用于完成@property (nonatomic,retain)NSString *name,写一个setter方法用于完成@property(nonatomic,copy)NSString *name.
@property (nonatomic, retain) NSString *name;
- (void)setName:(NSString *)name
{
  if (_name != name) {
    [_name release];
    _name = [name retain];
  }
}

@property(nonatomic, copy) NSString *name;
- (void)setName:(NSString *)name
{
  if (_name != name) {
    [_name release];
    _name = [name copy];
  }
}
4. 对于语句NSString*obj = [[NSData alloc] init]; ,编译时和运行时obj分别是什么类型
  1. 编译时是NSString类型
  2. 运行时是NSData类型
5. 常见的object-c的数据类型有那些, 和C的基本数据类型有什么区别
  1. 常用OC类型:NSString、NSArray、NSDictionary、NSData、NSNumber等
  2. OC对象需要手动管理内存,C的基本数据类型不需要管理内存
6. id 声明的变量有什么特性?

id声明的变量能指向任何OC对象

7. Objective-C如何对内存管理的,说说你的看法和解决方法?

1.每个对象都有一个引用计数器,每个新对象的计数器是1,当对象的计数器减为0时,就会被销毁

  1. 通过retain可以让对象的计数器+1、release可以让对象的计数器-1
  2. 还可以通过autorelease pool管理内存
  3. 如果用ARC,编译器会自动生成管理内存的代码
    注意:不管是MRC还是ARC都是在编译时完成的
8. 内存管理的几条原则时什么?按照默认法则.哪些方法生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露
  1. 只要调用了alloc、copy、new方法产生了一个新对象,都必须在最后调用一次release或者autorelease
  2. 只要调用了retain,都必须在最后调用一次release或者autorelease
  3. @property如果用了copy或者retian,就需要对不再使用的属性做一次release操作
  4. 如果用了ARC,另外讨论

相关文章

  • # 谁说iOS基础不重要

    1.#import 跟 #include、@class有什么区别?#import<> 跟 #import""又什么...

  • 谁说结果不重要

    曾经觉得过程比结果重要,后来才发现,谁说结果不重要。 努力了好久的事情,失败了...... 尽管多年后仍能回忆起过...

  • 谁说准备不重要

    一次,听了个这样的八卦:一个大嫂,过年的时候,打电话给在丈母娘家的儿子,叫他回来吃团圆饭。 儿子回来一看,米在锅里...

  • 谁说面包不重要

    1、 单身的小友一本正经的向我咨询情感问题。 抛开女友的职业不谈,他很愿意和她结婚。 问题就在她的职业上。 她在一...

  • 谁说整容不重要?

    今早花要凋了,有点可惜,幸亏现代有手机可以留存它的美。 美图完之后,有两个感慨: 一、谁说整容不重要 二、整容也要底子好

  • 谁说结果不重要?

    总说结果不重要,重在参与,重在过程,但当为一件事耗费心力,却没有结果时,又有多少人是心甘情愿接受的,苦苦追求很久,...

  • 谁说结果不重要

    成王败寇。 成了,当年那些说不出口的事情,后来都可以拿来当趣事讲了。 败了,当年多么相爱多么甜蜜,后来也只能说着烟...

  • 谁说金钱不重要?

    虽然是农村里出来的孩子,但我一直相信金钱并不能代表一切,尤其是人的情感,不该被其左右。但是随着家庭矛盾的日益激化,...

  • 谁说钱不重要??

    以前对钱没什么概念,还记得以前被朋友问“你觉得爱情重要?还是钱重要?”那时不假思索的理所当然的说,爱情,当然爱情重...

  • 谁说陪伴不重要

    日日思君不见君,共饮长江水。 只要岁岁平安,即使永不相见。 是的,我从前觉得很美,哪怕不在一起,也只希望你能够越来...

网友评论

      本文标题:# 谁说iOS基础不重要

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