- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
auto
和 clang 类型 instancetype
有什么区别?
我们必须在哪里使用 auto
以及在哪里必须使用 user instancetype
?
最佳答案
Objective C 中的
auto
继承自 C,表示 auto keyword
Defines a local variable as having a local lifetime.
Keyword auto uses the following syntax:
[auto] data-definition; As the local lifetime is the default for local variables, auto keyword is extremely rarely used.
Note: GNU C extends auto keyword to allow forward declaration of nested functions.
如果您正在寻找 C++11 的 auto
或 C# 的 var
的等效项 - 在 Objective C 中使用 id
。
id a = [NSString new];
id b = [NSNumber new];
但是 id
并没有像 C++11 中的 auto
那样在编译时解析为具体类型。
instancetype
是一个上下文关键字,可用作结果类型以表示方法返回相关结果类型。例如:
@interface Person
+ (instancetype)personWithName:(NSString *)name;
@end
instancetype与 id 不同,只能用作方法声明中的结果类型。
使用 instancetype,编译器将正确推断 +personWithName: 的结果是一个 Person 的实例。如果您尝试调用,将会产生错误
[[Person personWithName:@"Some Name"] methodThatNotExistsInPerson];
如果你将使用 id
编译器不会这样做,你不会修复它并且会收到运行时错误!
Instancetype 用于为 Objective C 添加更多的“强类型”。
关于ios - "auto"和 "instancetype"类型的主要区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22061741/
我想将 self 作为 instancetype 传递给这个函数的回调闭包: extension UIView { public func onTap(_ handler: @escaping
为什么用InstanceType错了在泛型上?是协变的还是逆变的? interface Ctor { new(): Instance; } interface Instance { print
我显然希望允许它引用实现而不是抽象本身,同时仍然只依赖抽象接口(interface)定义。 最佳答案 您可以使用 prototype 的类型而不是构造函数返回的类型。 type AbstractIns
我有一个相当简单的工厂函数,它使用构造函数映射来根据传入的字符串参数确定要创建的正确对象类型。 我知道示例中描述的将类构造函数传递给工厂的工厂模式,但在我的例子中,我需要传递一个简单的字符串。 cla
我有一个相当简单的工厂函数,它使用构造函数映射来根据传入的字符串参数确定要创建的正确对象类型。 我知道示例中描述的将类构造函数传递给工厂的工厂模式,但在我的例子中,我需要传递一个简单的字符串。 cla
auto 和 clang 类型 instancetype 有什么区别? 我们必须在哪里使用 auto 以及在哪里必须使用 user instancetype? 最佳答案 Objective C 中的
假设我有一个异步任务来获取像这样的实例数组: class func fetchListOfInstances(callback: ([MySuperClass])->()) { // do l
对 Objective c 很陌生。我的界面和实现如下所示: // MyAuth.h // @interface + (instancetype)sharedToken; // MyAuth.m //
TypeScript 2.8 添加了一个新的核心类型InstanceType,可用于获取构造函数的返回类型。 /** * Obtain the return type of a constructo
这个问题在这里已经有了答案: Would it be beneficial to begin using instancetype instead of id? (5 个答案) 关闭 9 年前。 最
我有一个基类 Base 派生自 A。 我想写这样的东西 Base *unsafeRelease() { --_refCount; return this; } ... 这样我就可以在
查看 NSArray.h 中的 NSArray 创建方法 block 。 返回 id 的方法不返回 instancetype 是否有正当理由? Apple 甚至努力添加内联注释,让我们知道 id 在这
这是一个关于如何优雅地规避 NSObject 类中的 init 可空性的问题。 这是一个经典的 Objective-C 实现: + (instancetype)sharedInstance {
Clang 添加关键字 instancetype 据我所知,它取代了 id作为 -alloc 中的返回类型和 init . 使用 instancetype 是否有好处?而不是 id ? 最佳答案 肯定
本文整理了Java中org.apache.xmlbeans.impl.values.XmlObjectBase.instanceType()方法的一些代码示例,展示了XmlObjectBase.ins
效果很好: UINavigationController *nc = [[UINavigationController alloc] initWithNavigationBarClas
我有一个如下所示的 Objective-C 类: @interface CustomObjectHavingData : NSObject @property (nonatomic, strong)
static NSMutableDictionary * allTheSingletons; @implementation BGSuperSingleton +(instancetype)singl
使用instancetype 作为init 和相关方法的返回值是推荐的处理方式,参见最新clang features .但是,w.r.t. 的最佳实践是什么? NSCopying 协议(protoco
根据clang documentation , 返回 id 的方法隐式知道返回 instancetype 当它是以 new 或 alloc 开头的类方法时>,或以 retain、autorelease
我是一名优秀的程序员,十分优秀!