首页 > 其他分享 >IOS 小技巧积累

IOS 小技巧积累

时间:2023-04-30 18:32:46浏览次数:43  
标签:积累 调用 技巧 对象 self IOS myNumber NSNumber retain


1. 使用@property和@synthesize声明一个成员变量,给其赋值是时要在前面加上"self.",以便调用成员变量的setmember方法。 

   直接调用成员变量并且给其赋值:member=[NSString stringWithFormat:@””];将不执行setmember 方法。

   使用self调用成员变量并且给其赋值:self.member=[NSString stringWithFormat:@””];将执行setmember方法。


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

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


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


4. #pragma mark -
    #pragma mark Initialization
   它们告诉Xcode编译器,要在编辑器窗格顶部的方法和函数弹出菜单中将代码分隔开;
注意
   #pragma mark – 的“-”后面不能有空格。
   如果你的标志没有出现在弹出菜单中,比如没有分隔线出现,请在Xcode菜单 “Preferences..”中的 “Code Sense”选项取消选中”Sort listalphabetically”即可。


5.  我们通过发送消息给对象出发特定动作;对象发送某些变化的时候通过回调函数(callback)通知我们。对象在特定事件发生的时候,就会调用对应的回调函数,触发业务逻辑。
   回调函数通过所谓的代理(Delegation)来实现.

   delegate使用方法:

   @property (assign) xxxDelegate delegate;

   正确的使用方法是使用assign属性而不是retain。

   之所以对于delegate这类对象使用assign而不是用retain是为了防止循环retain(retain loop)。


6. 编程习惯:定义Bool类型值时,@property(nonatomic,getter=isSoundOn) BOOL soundOn;


7.手动创建内存自动释放池:

     NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc]init];

     // TODO

     // 向对象发送一条autorelese消息时,就将该对象加入到自己手动创建的内存释放池中。在此方法结束时调用[pool release],将释放添加到该内存池的所有对象.

     [pool release];

     // 如若在自动释放池pool 调用release方法之后,某对象的retainCount不为0,该对象将继续保持可用。

8.任何基本数据类型(包括char数据类型),可以通过使用NSNumber类根据这些数据类型来创建对象。


NSNumber *myNumber, *floatNubmer;
    
    // long value
    myNumber = [NSNumber numberWithLong:0xabcdef];
    NSLog(@"%lx",[myNumber longValue]);          // 输出:abcdef
    
    // char value
    myNumber = [NSNumber numberWithChar:'X'];
    NSLog(@"%c", [myNumber charValue]);          // 输出:X
    
    // float value
    floatNubmer = [NSNumber numberWithFloat:100.00];
    NSLog(@"%g",[floatNubmer floatValue]);       // 输出:100




9. 当把某一个对象以AddObject或者初始化的形式加入到Array,Dictionary中时,该对象retainCount将+1。

   当把某一个对象以remover的形式从Array,Dictionary移除时,该对象retainCount将-1。

   当使用copy 和mutableCopy 产生数组副本时,数组中每个元素的保持计数将+1。


10. 异常:exc_bad_access.

     引用对象已经释放,即“魔鬼引用”。与VS中的“未将引用的对象应用到对象的实例”类似。


11. 更新UITableView数据问题:

     

      解决方法:performSelectorOnMainThread:@selector(reloaddata) withObject:nil waitUntilDone:YES

               但datasource并没有数据,需要重新加载数据

标签:积累,调用,技巧,对象,self,IOS,myNumber,NSNumber,retain
From: https://blog.51cto.com/u_548275/6238009

相关文章

  • iOS百度地图 定位的实现
    今天发现自己好笨啊。。。一直在搞定位,想为什么会是空的,原来定位也是需要代理去实现的在初始化地图的时候,也就是在viewDidload里面是这样的mapView.showsUserLocation=YES;if(mapView.userLocation.location!=nil){NSLog(@"定位成功");coor=......
  • IOS为每个网请求添加进度标示
    UIViewController的子类,且只有界面才有必要现实进度标示。然后在网络请求的开始和结束调用这个方法1.基于UIViewController做扩展#import@implementationvoid)showProgress{NSLog(@"=======showProgress=========");MBProgressHUD*progressHUD=[[[MBPro......
  • [深入浅出Cocoa]iOS网络编程之Sock…
    一,iOS网络编程层次模型在前文《深入浅出Cocoa之Bonjour网络编程》中我介绍了如何在Mac系统下进行Bonjour编程,在那篇文章中也介绍过Cocoa中网络编程层次结构分为三层,虽然那篇演示的是Mac系统的例子,其实对iOS系统来说也是一样的。iOS网络编程层次结构也分为三层:Cocoa层:NSURL......
  • [iOS]GCD小结
    BriefIntroduction  GCD,全称GrandCentralDispath,是苹果开发的一种支持并行操作的机制。它的主要部件是一个FIFO队列和一个线程池,前者用来添加任务,后者用来执行任务。  GCD中的FIFO队列称为dispatchqueue,它可以保证先进来的任务先得到执行(但不保证一定先执行结束)。 ......
  • IOS实例变量和属性
    在IOS编程中,很多人没有理解实例变量与属性的区别,我根据自己的经验,这这里与大家分享下这里面的区别,下面我写一个简单的例子:.h@interfaceMyController:UIViewController{UILabel*_myLabel;//这里是实例变量声明}@property(nonatomic,retain)UILabel*myLabe......
  • iOS开发 UItableView中的单元…
    iOSiPhone开发UItableView中的单元格背景渐变渐变如果用背景图片,会让你的app臃肿。给APP瘦身,我们可以使用代码来解决渐变的问题。这篇文章是解决表格中的单元格的简便问题,同时解决单元格外边框问题。1:设置好开始颜色与结束颜色。推荐一个小工具,在chrome浏览器上安装一个扩展......
  • iOS数据存储的四种方案对比
    你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且大家对这个问题的热情持续高涨。本文主要从概念上把“数据存储”这个问题进行剖析,并且结合各自特点和适用场景给大家提供一个选择的思路,并不详细介绍某一种方式的技术细节。谈到数据......
  • iOS开发UITableView基本使用方法总…
    UITableView基本使用方法1.首先,Controller需要实现两个delegate,分别是UITableViewDelegate和UITableViewDataSource2.然后UITableView对象的delegate要设置为self。3.然后就可以实现这些delegate的一些方法拉。(1)-(NSInteger)numberOfSectionsInTableView:(UITableView*......
  • Vue 异步通信Axios
    使用Axios实现异步通信需要先导入cdn:<scriptsrc="https://unpkg.com/[email protected]/dist/axios.min.js"></script>使用到的数据data.json{"name":"kuang","url":"https://www.bilibili.com/?spm_id_from=333.788.0......
  • dell 7080m black mac bios setup
    BISO设置参考的以下帖子,改了一部分内容USBWakeSupport和WakeonLAN/WLAN保持了默认,因为我用不到网络唤醒功能。​https://github.com/3dudu/dell-optiplex-7080-hackintosh-opencore设置项   值SATAOperation   AHCIIntegratedNIC   EnabledSecureBootEnable ......