据我所知,对于头文件中的公共属性,编译器会自动生成getter和setter方法,并且您可以覆盖这些访问器。但对于在类扩展中声明的内部属性,我不知道如何为它们定义getter和setter方法。
我的习惯是通常初始化一个实例(如果需要)并在getter方法中为property设置默认值。所以,我正在寻找一种方法来对内部属性做同样的事情。
答案 0 :(得分:1)
" public"之间绝对没有运行时差异。和"内部"属性。您讨论的差异就是他们声明的文件。如果编译器无法查看属性的定义,那么它会发出警告(如果您是&#39,则会出错)当你尝试访问它时,重新使用点表示法。但这与在运行时实际运行的方式无关。
您可以覆盖"内部"属性与" public"完全相同的。
那说,并且无关,只是根据以前看到的经验采取或离开的意见:
我的习惯是通常初始化一个实例(如果需要)并在getter方法中为property设置默认值。所以,我正在寻找一种方法来对内部属性做同样的事情。
我可能不习惯这个习惯。"对于特别重要的特定情况,覆盖具有延迟初始化的getter是有意义的,但是以这种方式设置getter中的默认值往往过于复杂且容易出错。只需在初始化程序中设置默认值即可。