Objective-C 之 Attribute & Package

中文难以表达原著的意思

Method and Class Attributes

Objective-C now supports some gcc attributes for Objective-C methods. Syntactically, attributes for a method follow the method's declaration, and attributes for a method parameter sit between the parameter type and the parameter name. Supported attributes include:

  • Deprecation and availability, including AvailabilityMacros.h

       - (void)method:(id)param  __attribute__((deprecated));
  • Unused parameters

        - (void)method:(id) __attribute__((unused)) param;
  • Sentinel parameters, including NS_REQUIRES_NIL_TERMINATION

        - (void)methodWithObjects:(id)obj, ...  NS_REQUIRES_NIL_TERMINATION;

Objective-C also supports some gcc attributes for Objective-C classes. Syntactically, attributes for a class precede the class's @interface declaration. Supported attributes include:

  • Deprecation and availability, including AvailabilityMacros.h

        __attribute__((deprecated))
        @interface MyDeprecatedClass : SomeSuperclass
  • Visibility

        __attribute__((visibility("hidden")))
        @interface MyPrivateClass : SomeSuperclass

@package Instance Variables

@package is a new instance variable protection class, like @public and @protected . @package instance variables behave as follows:

  • @public in 32-bit;

  • @public in 64-bit, inside the framework that defined the class;

  • @private in 64-bit, outside the framework that defined the class.

In 64-bit, the instance variable symbol for an @package ivar is not exported, so any attempt to use the ivar from outside the framework that defined the class will fail with a link error. See "“64-bit Class and Instance Variable Access Control” " for more about instance variable symbols.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值