相关疑难解决方法(0)

使用alloc init而不是new

学习Objective-C并阅读示例代码,我注意到对象通常是使用以下方法创建的:

SomeObject *myObject = [[SomeObject alloc] init];
Run Code Online (Sandbox Code Playgroud)

代替:

SomeObject *myObject = [SomeObject new];
Run Code Online (Sandbox Code Playgroud)

是否有理由这样做,因为我已经读到它们是等同的?

oop objective-c

337
推荐指数
5
解决办法
10万
查看次数

是否可以在Objective-C中将-init方法设为私有?

我需要-init在Objective-C中隐藏(私有)我的类的方法.

我怎样才能做到这一点?

objective-c

143
推荐指数
3
解决办法
4万
查看次数

如何在Objective-C 2.0中将方法标记为已弃用?

我是开发相当大的iPad应用程序的团队的一员,因此我们创建了许多不同的类.问题是一些方法现在已经过时了,我不想简单地删除它们,因为我知道整个系统的某些部分使用这些方法......但是有更好的(更新的)变体可以使用相反(一些旧的实际上称为新的,但整体类接口变得混乱).

有没有一种方法可以将某些方法标记为折旧(如@deprecated在Java和[Obsolete].NET中).

我看到Apple使用Availability.h并且有标签,例如

__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_0);
Run Code Online (Sandbox Code Playgroud)

...这是唯一的方法(+ App Store是否可以安全地执行此操作?)或者是否有替代方案会在Xcode中标记警告?

iphone objective-c deprecated

139
推荐指数
5
解决办法
4万
查看次数

Objective-C:如何防止调用非默认初始值设定项?

我创建了一个不同的init方法,并希望它是指定的初始化程序而不是标准-init.如何防止客户端代码使用实例化类-init

例如

/* everyone must call this */
- (id)initWithInfo:(NSDictionary *)info {
  self = [super init];
  if (self) {
      _info = info;
  }

  return self;
}

/* Don't want anyone to be able to create this using init */
Run Code Online (Sandbox Code Playgroud)

objective-c initializer

-1
推荐指数
1
解决办法
295
查看次数

标签 统计

objective-c ×4

deprecated ×1

initializer ×1

iphone ×1

oop ×1