zoukankan      html  css  js  c++  java
  • 面试题 小结 转载

    1.Objective-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式是用继承好,还是用分类好,为什么?

    答案:

    Objective-C的类不支持多继承。可以实现多可接口(协议)。

    Category是Objective-C的类别,是一种为现有的类添加新方法的方式。

    重写一个类的方式用继承好。(1)使用继承可以定义一个具有父类所有功能的新类,它继承了父类的这些功能,当与父类功能有所不同时候,可以在子类中将其覆盖。(2)类别中无法向类中添加新的实例变量,类别没有位置容纳实例变量。

    说明

    类别有两个方面的局限性:第一,无法向类中添加新的实例变量。类别没有位置容纳实例变量。第二,命名冲突,即类别中的方法与现有的方法重名。当发生命名冲突时,类别具有更高的优先级。你的类别方法将完全取代初始方法,从而无法再使用初始化方法。有些编程人员再自己的类别方法中增加一个前缀,以确保不发生命名冲突。

    类别的作用:Cocoa中的类别主要用于3个目的:将类的实现分散到多个不同文件或多个不同框架中,创建对私有方法的前向引用,以及向对象添加非正式协议。

    2.#import与#include有什么区别?#import <> 与 #import "" 又有什么区别?

    答案:

    C语言使用#include语句通知编译器应在头文件中查询定义。在Objective-C程序中也可以使用#include来实现这个目的。#import是GCC编译器提供的,Xcode在编译Objective-C、和C++程序时候都会使用它。#import可以保证头文件只被包含一次,而不论此命令实际上在那个文件中出现多少次。一般来说,在导入Objective-C头文件的时候使用#import,在包含C头文件时使用#include。

    #import "" 指示预处理程序在一个或者多个文件目录(通常首先在包含源文件的目录中查找,但是通过修改适当的“项目设置”,可以用Xcode指定预处理程序搜索的确切位置)中寻找指定文件。

    #import <> 将导致预处理程序只在特殊的“system”头文件目录中寻找包含文件,当前目录不会被搜索,同样,使用Xcode可以通过修改菜单中选择“项目”、“编辑项目设置”来更改这些目录。

    #import <Foundation/Foundation.h>语句告诉编译器查看Fondation框架中的Foundation.h头文件

    3.类变量的@protected,@private,@public,@package声明各有什么含义?

    答案:

    @protected —Methods defined in the class and any subclasses can directly access the instance variables that follow.This is the default case.

    该类和所有的子类中的方法可以直接访问这样的变量,这是默认的

    @private —Methods defined in the class can directly access the instance variables that follow, but subclasses cannot.

    该类中的方法可以访问这样的变量,子类不可以。

    @public —Methods defined in the class and any other classes or modules can di- rectly access the instance variables that follow.

    除了自己和子类中的方法外,也可以被其他类或者其他模块中的方法所访问。开放性最大。

    @package —For 64-bit images, the instance variable can be accessed anywhere within the image that implements the class.

    对于64位图像,这样的成员变量可以在实现这个类的图像中随意访问。

    4.id声明的对象有什么特性?

    答案:

    id是任意对象类型的,不能表示基本对象类型。id类型是通用指针类型,因为通过指针,也就是内存地址来引用对象,所以可以自由地将它们在id变量之间来回赋值。因此,返回id类型值的方法是返回指向内存中某对象的指针。然后可以将该值赋给任何对象变量。因为无论在哪里,对象总是携带它的isa成员。所以即使将它存储在id类型的通用对象变量中,也总是可以确定它的类。

  • 相关阅读:
    委托demo
    事件demo
    数据结构与算法分析表ADT
    数据结构与算法分析栈ADT
    Access的“自动编号”问题
    C#获取时间函数
    在load事件中关闭窗体
    panel里面显示form的问题
    将RichTextBox 的内容直接写入数据库
    利用反射来创建一个Form.
  • 原文地址:https://www.cnblogs.com/xlp724619666/p/4285651.html
Copyright © 2011-2022 走看看