objective-c – 在@implementation中添加ivars

为了良好的封装,体面的Objective-C程序员将私有ivars放在主实现文件中声明的私有扩展中,如下所示:
// MyClass.m

@interface MyClass () {
    float value;
}
@end

@implementation MyClass
@end

但是最近,我发现一个更简单的隐藏私有ivars的方法:ivars可以在@implementation之后的{}块中声明,如下所示:

// MyClass.m

@implementation MyClass {
    float value;
}
@end

这是非常方便的,没有私人的方法,但只有私人ivar需要隐藏.

但是,我不知道它的语法有效性.任何人都可以使用某些规范参考来验证或使其无效吗?

解决方法

这是完全有效的,这里是苹果公司谈论的文件

> https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html#//apple_ref/doc/uid/TP40011210-CH5-SW6

我不会亲自使用它,因为我更喜欢类继承类的语法.

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录<future>future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...