`
linqianqiu
  • 浏览: 9431 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

关于Objective-c 对象 getter 初始化

    博客分类:
  • IOS
阅读更多
昨天写了一个计算器 出现一个bug,导致对象为null并且调试也无法找出错误
最后终于发现原来是getter的函数名写错了
所以导致初始化失败。
//
//  CalculatorViewController.m
//  Calculator
//
//  Created by linqianqiu on 12-7-19.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "CalculatorViewController.h"
#import "CalculatorBrain.h"

@interface CalculatorViewController()
@property (nonatomic) BOOL userIsInTheMiddleOfEnteringANumber;
@property (nonatomic, strong) CalculatorBrain *brain;
@end

@implementation CalculatorViewController

@synthesize display = _display;
@synthesize userIsInTheMiddleOfEnteringANumber = _userIsInTheMiddleOfEnteringANumber;
@synthesize brain = _brain;

- (CalculatorBrain *)barin {
    if (!_brain) {
        _brain = [[CalculatorBrain alloc] init];   
    }
    return _brain;
}

- (IBAction)digitPressed:(UIButton *)sender {
    NSString* digit = sender.currentTitle;
    if (self.userIsInTheMiddleOfEnteringANumber) {
        self.display.text = [self.display.text stringByAppendingFormat:digit];
    } else {
        self.display.text = digit;
        self.userIsInTheMiddleOfEnteringANumber = YES;
    }
}

- (IBAction)operationPressed:(UIButton *)sender {
    if (self.userIsInTheMiddleOfEnteringANumber) [self enterPressed];
    double result = [self.brain performOperation:sender.currentTitle];
    NSString* resultString = [NSString stringWithFormat:@"%g", result];
    self.display.text = resultString;
}
- (IBAction)enterPressed {
    [self.brain pushOperand:[self.display.text doubleValue]];
    self.userIsInTheMiddleOfEnteringANumber = NO;
}

- (IBAction)clearPressed {
    self.display.text = @"0";
}

@end
分享到:
评论

相关推荐

    Objective-C 2.0 with Cocoa Foundation--- 7,对象的初始化以及实例变量的作用域

    在Objective-C中,对象的初始化和实例变量的作用域是编程中的关键概念,对于理解和创建健壮的iOS和macOS应用程序至关重要。 首先,让我们深入理解对象的初始化过程。在Objective-C中,初始化通常涉及`init`方法。每...

    Objective-C 懒加载getter 生成器(开发辅助工具)

    在Objective-C中,懒加载是一种优化技术,它推迟了对某些资源或对象的初始化,直到它们真正被使用时才进行。这种策略可以避免在应用启动时不必要的内存消耗,尤其对于大型或者复杂对象,这种优化尤为关键。懒加载...

    基于Objective-C的面向对象编程

    在Objective-C中,对象是通过创建类的实例来实现的,使用`init`方法初始化。 2. **类**:类是对象的蓝图,定义了一组共享的属性和方法。在Objective-C中,类使用`@interface`关键字声明,`@implementation`关键字...

    Objective-C程序设计

    方法名前缀“init”通常用于初始化对象,而“dealloc”用于清理对象资源。 Objective-C引入了协议(Protocols),这是一种类似Java和C#的接口概念。协议定义了一组方法,但不包含实现。类可以遵循一个或多个协议,...

    Effective Objective-C 2.0.pdf

    - 学习如何正确地遵循初始化协议,以确保对象被正确地创建和销毁。 7. **多态(Polymorphism)**: - Objective-C的多态基于消息发送机制,使得子类可以替换父类的方法实现。 - 使用`id`类型或协议类型可以充分...

    Objective-C培训资料

    在Objective-C中,对象必须通过初始化才能使用。 ##### 示例 ```objective-c MyClass *obj = [[MyClass alloc] init]; ``` #### 七、存取器 存取器(Accessors)是用于获取和设置对象属性的方法。 - **getter** ...

    Objective -C 基础教程 的代码

    `alloc`分配内存,`init`初始化对象。 3. **类和对象**: 类是对象的模板,定义了对象的属性(ivar)和方法(method)。对象是类的实例,通过类可以创建多个对象。 4. **属性(Property)**: Objective-C 提供...

    Objective-C培训资料.pdf

    同时,也可以使用初始化方法列表来初始化对象。 存取器 存取器是Objective-C中用于访问和修改对象私有变量的方法。开发者通常会创建一系列的 getter 和 setter 方法来控制对对象内部状态的访问。 继承 Objective-C...

    objective-c 程序设计 + 代码

    3. **构造方法(Init Methods)**:初始化方法如`-init`,`-initWithCoder:`和`-initWithNibName:bundle:`用于创建并设置新对象的状态。 4. **分类(Categories)**:使用`+load`和`+initialize`方法,可以在类加载...

    Using Swift with Cocoa and Objective-C中文

    对于没有默认初始化器的情况,可以使用Objective-C的初始化方法名称来调用它们,如`init(coder:)`。 **访问属性(Accessing Properties)** Swift可以直接访问Objective-C类的属性,如同访问Swift属性一样。但是需要...

    Objective-C Cheatsheet

    从标签 "objective-c" 中我们可以得知这份文档是专门关于Objective-C语言的,而不仅仅是一个普通的编程速查表。 接下来,我们深入到文件提供的内容中,可以发现以下几个重要知识点: 1. 类的定义和实现: - 在...

    objective-c 基础教程

    例如,你可以找到如何创建并初始化对象、如何使用属性和方法、如何实现协议以及如何处理内存管理的实例。 总之,Objective-C作为iOS开发的重要语言,掌握其基本语法和特性对于开发高质量的iOS应用至关重要。通过本...

    Objective-c学习笔记

    7. **alloc和init**:`alloc`方法用于分配内存并初始化对象,`init`方法则用于进一步配置对象的实例变量。 8. **类的结构**:一个Objective-C类通常包含接口(.h文件)和实现(.m文件)。接口文件声明实例变量和...

    Objective-C教程

    Objective-C是一种面向对象的编程语言,它是在C语言的基础上扩展而成的,主要应用于苹果的操作系统(如iOS和macOS)的软件开发。尽管描述中提到这是一种“非常奇葩”的语言,但实际上,Objective-C具有清晰简洁的...

    Objective-C Cheat Sheet

    自定义初始化器允许在创建对象时传递参数,并执行额外的初始化操作: ```objective-c -(id)initWithParam:(anytype)param{ if ((self = [super init])) { self.propertyName = param; } return self; } ``` ##...

    objective-c培训资料

    Objective-C支持C语言的所有特性,并增加了面向对象的特性,如类、对象、消息传递等。Objective-C的主要优势在于它强大的类库以及简洁高效的语法结构。 #### 二、程序整体语法结构 Objective-C程序通常由头文件(....

    The Objective-C 2.0 Programming Language

    4. 对象初始化和析构:Objective-C 2.0改进了对象初始化过程,引入了`-init`方法的快速失败机制,以及`+load`和`+initialize`方法,用于类加载时的自定义行为。 三、内存管理与ARC Objective-C 2.0引入了自动引用...

Global site tag (gtag.js) - Google Analytics