备用小知识[不断更新***]

1.延时函数: [NSThread sleepForTimeInterval:3];

     [self performSelector:@selector(machineBallAction) withObject:nil afterDelay:0];

2.

读写属性(readwrite/readonly):顾名思义不用多说
设置属性(assign/retain/copy):assign为直接赋值,适合数值类型的;retain最常用,一般对象都用这个代表保留;copy为复制,多用于字符串。
原子性atomicity(nonatomic):默认是atomic,如果是多线程的程序要保证某一个成员变量的一致性,须使用 atomic。

NSString用copy,

delegate用assign(且一定要用assign),

非objc数据类型,比如int,float等基本数据类型用assign(默认就是assign),

而其它objc类型,比如NSArray,NSDate用retain。

3.实现随机数:srandom(time(NULL));

4.当你用alloc/init创建一个array时,它的引用计数已经为1了。因此当你完成与array相关的工作时,需要递减它的引用计数。在Object-C中,你可以通过对这个对象调用release方法。

  你一定要在dealloc方法中release这个array,显然易见,当你释放这个array后,你不会再需要这个array了。无论何时你在viewDidUnload中创建一个对象(这个对象的引用对象计数设置为1),你应该在viewDidUnload中释放这个对象。

5.@protected变量用法: [object valueForKey:@"name"];

            或着直接赋值:value = @"name";

总结:      直接调用 属性名 = 。。。将不会执行set方法

              self.属性名       = 执行set方法 

即:若用@property和@synthesize声明一个变量后,给其赋值是要在前面加上"self."!!!      切记!!!!!

6.#pragma mark -

#pragma mark Initialization

它们告诉Xcode编译器,要在编辑器窗格顶部的方法和函数弹出菜单中将代码分隔开;

注意

  1. #pragma mark – 的“-”后面不能有空格。
  2. 如果你的标志没有出现在弹出菜单中,比如没有分隔线出现,请在Xcode菜单 “Preferences..”中的 “Code Sense”选项取消选中”Sort list alphabetically”即可。
  3. 7.我们通过发送消息给对象出发特定动作;对象发送某些变化的时候通过回调函数(callback)通知我们。对象在特定事件发生的时候,就会调用对应的回调函数,触发业务逻辑。
  4. 回调函数通过所谓的代理(Delegation)来实现.
  5. 8.
原文地址:https://www.cnblogs.com/fuleying/p/2136287.html