iPhone开发问题

本文探讨了在iOS应用开发中提升性能的关键策略,包括内存管理、代码优化、并发处理和资源加载等核心方面,旨在帮助开发者实现更流畅、响应更快的应用体验。通过实践这些建议,可以显著提高应用的运行效率,增强用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.归档一个单实例对象时要在initWithCoder里retain一下。不然它会在我不知道的情况下被释放。原因不明。请高人指点。
2.开发过程中的流程最好要有成功失败的返回值,并打出LOG方便快速查找问题。
if(![self doSomeThing]){
 

     NSLog{~~~~[self doSomeThing]~~~return NO~~~~};
       return ;
}
3.当有通知(NSNotificationCenter)貌似不收不到时,尝试将被通知后要执行的函数延迟0.01秒,尤其是通知和界面推出动画在一起时。有问题。延迟一下,再试试。
4.写一个规范的安全的单实例:
static MyClass *sigleInstance = nil;
+ (id)shareInstance {
       @synchronized(self) {
               if (sigleInstance == nil) {
                       sigleInstance = [[self alloc] init];
               }
       }
       return sigleInstance;
}
- (id)init
{
       if (self = [super init])
       {
              self.string1 = [NSString string];
              self.string2 = [NSString string];

       }
       return self;
}
+ (id)allocWithZone:(NSZone *)zone {
       @synchronized(self) {
               if (sigleInstance == nil) {
                       sigleInstance = [super allocWithZone:zone];
                       return sigleInstance;
               }
       }
       return nil;
}

+ (id)copyWithZone:(NSZone *)zone {
       return self;
}

- (id)retain {
       return self;
}

- (unsigned)retainCount {
       return UINT_MAX;
}

- (void)release {
}

- (id)autorelease {
       return self;
}
- (void)dealloc
{
       [string1 release];
       [string2 release];
       [super dealloc];
}


#pragma mark 
#pragma mark   NSCoder归档
-(void)encodeWithCoder: (NSCoder *)encoder
{
       [encoder encodeObject:self.string1 forKey: @"string1"] ;             
       [encoder encodeObject:self.string2 forKey: @"string2"] ;             
}

-(id)initWithCoder: (NSCoder *)decoder
{
       MyClass * sigleInstance =   [[MyClass shareInstance] retain] ;
       sigleInstance.string1 = [decoder decodeObjectForKey:@"string1"];
       sigleInstance.string2 = [decoder decodeObjectForKey:@"string2"];
       return sigleInstance;
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值