ios 创建自定义UIView时,您应该为该自定义UIView创建一个示例变量,还是只使用参数

uoifb46i  于 2023-03-31  发布在  iOS
关注(0)|答案(1)|浏览(145)

我不是一个全职的iOS开发人员,所以这个问题的答案可能很明显。我有一个名为MenuHeader的模型,并创建了一个名为MenuHeaderView的自定义UIView。我有一个这样的方法:
在MenuHeaderView.m中

-(id) initWithFrame:(CGRect)frame menuHeader:(MenuHeader *)menuHeader
{
    self = [self initWithFrame:frame];
    if (self) {
        _menuHeader = menuHeader; // <- here's the part I'm asking about
        NSLog(@"here is menu header depth: %i", _menuHeader.depth);
        NSLog(@"here is my header depth as argument %@", menuHeader.depth);

总的来说我通常创建一个名为_menuHeader的示例变量,然后在initWithFrame中对其赋值。我想我可以只处理参数menuHeader,但我总是用前者。这是不必要的吗?有什么理由只使用menuHeader参数吗?我认为这只是风格上的,我更喜欢这个想法,这是我们所展示的模型的本地instanceVariable。这两种不同的方式有什么区别吗?

osh3o9ms

osh3o9ms1#

示例变量的目的是让它在 * 以后 *,用于一些 * 其他 * 方法或(如果通过访问器公开)供其他对象访问。

  • 如果你不需要它--也就是说,如果你对传入的menuHeader参数的使用纯粹是这个init方法的局部--你就不应该使用示例变量,因为它是没有意义的。
  • 但是,反过来说-如果你需要这个传入的menuHeader参数的值为 persist,以便稍后由其他方法访问-那么你 * 应该 * 使用示例变量,因为传入的menuHeader参数是纯本地的,当init方法完成时,它将死亡(超出范围)。

通常,编写自己的init方法的原因正是为了接受参数并将其分配给示例变量,这就是为什么我们经常看到这种模式。

相关问题