zoukankan      html  css  js  c++  java
  • objective-c(三)类与对象的方法调用

      在objective-c中,关于类同java有相似的地方,就是也包括成员变量和方法,虽然在叫法上不太一样。但是表达的却是一个意思。创建一个类一般直接创建一个.m文件即可。普通情况下都是有模版自动生成。至于不同是在与方法方法上。

      方法修饰词:extern

      说到上面的关键字。想到于public的意思。也就是别的类只要倒入了这个类,就可以调用这个类方法。而如果没有写,在其他类中调用是糟糕的。也就是不安全的不规范的。 但是在是测试的时候没有发现警告或者报错,所以简单记一下即可。

      先来说一下一个正常的项目文件。一个类功能需要两个文件组成:.h,.m文件组成。h文件时接口文件,而m文件相当于实现文件。

      在类的概念上有成员变量的说法。成员变量的声明需要写在.h的继承后面的大括号内:如下

      #import <Foundation/Foundation.h>

      @interface demo:NSObject{

          int temp;

      }

      @end

      上面的temp变量就是成员变量的声明,但是在oc中不推荐直接使用成员变量,大部分情况都使用的是属性,如下

      @property (nonatomic,assign) int *temp;

      上面的语法是指创建一个属性,这个属性来真正替代成员变量。有点类似于get/set方法;

    • assign //简单赋值,主要用于基本数据类型
    • copy //创建一个新的对象,新的对象和旧对象是独立的两个对象
    • retain //将对象计数器加1
    • readonly //表示只读属性  只会生成getter方法 不会生成setter方法
    • readwrite //默认值,表求生成setter和getter方法
    • nonatomic //非原子访问,不加同步 ,多线程并发访问提高性能 (对多线程的保护,防止在未写完,被另一个线程读取,造成数据错误)

      上面只要设置了@property属性。在实现类中就可以直接使用get/set方法。而无需手动创建,只需要在实现类中使用@synthesize标签即可

      #import "xing_unit.h"

      @implementation xing_unit

      @synthesize flag;or@dynamic flag;

      @end

      上面需要说明的是,如果使用@synthesize标签会自动创建get/set方法。但是如果使用的是@dynamic标签。则需要手动创建对应的get/set方法

      在使用get/set方法时。如下:注意在使用时时对象名,也就是说使用get/set方法必须先实例化对象。

      get [对象名 变量名];

      set [对象名 set变量名];

      关于对象和类的概念,类有可能主要针对的面向过程编程,可以当成工具类的功能,而对象则不同,于java相同。但是在调用方法的时候不同。

      在使用类方法时有两种写法。

      方法1:

      int getNum(int num); 

      调用:

      int tmep = getNum(12);

      方法2:

      +(int) getNum:(int)num;

      调用:

      int temp = [类名 getNum:12];

      以上的两种方法都是类方法的写法。但是在调用的时候有区别。具体目前没有查到有什么效率问题。可以使用。

      对象方法写法如下:

      -(int) getNum:(int)num;  

      调用:

      int temp= [对象名 getNum:12];

      在oc类中,与java不同。oc中的方法分为类方法和对象方法,编写上在于方法签名的开头使用+/—符号来进行区分,如果换成java,类方法类似于java中的静态方法,即在不实例化类的情况下也能调用。而对象方法则根java中的普通方法一致,实例化后才能使用。

      在使用中也可以使用电标记。即使用

      对象.属性名

      这样的使用有点类似于java直接方法成员变量。所以java使用了private来私有化。在oc中没有。虽然可以使用点标记来访问。但是最好不要使用。

  • 相关阅读:
    WIN8.1安装 .net framework 3.5
    WIN8.1侧边栏文件夹删除
    初次接触Spring cloud微服务框架
    activiti中实现TaskListener注入Spring的bean
    spring中事务的回滚
    BeanUtils.copyProperties
    Java8新特性
    结构型模式总结
    创建型模式总结
    二十三种设计模式
  • 原文地址:https://www.cnblogs.com/imtodd/p/6611117.html
Copyright © 2011-2022 走看看