当前位置: 首页 > news >正文

公司网站制作公司用asp做的网站

公司网站制作公司,用asp做的网站,wordpress 菜单 无效,wordpress 百度商桥1、简介从今天开始接触IOS开发#xff0c;而后则接触PHP开发#xff0c;接触是为了更好的理解开发。IOS的开发前提是Objective-C#xff0c;本篇简单总结其知识点。 什么是Objective-C#xff0c;它是C的面向对象的扩展。 2、知识点 1、Objective-C类定义有两个部分…1、简介从今天开始接触IOS开发而后则接触PHP开发接触是为了更好的理解开发。IOS的开发前提是Objective-C本篇简单总结其知识点。 什么是Objective-C它是C的面向对象的扩展。 2、知识点 1、Objective-C类定义有两个部分接口部分和实现部分。接口部分 interface className:superclassName { Instance variable declarations } Method declarations end 实现部分类的方法的实现。 2、NSObject唯一根类几乎所有的Objective-C类都是直接或间接的是NSObject的子类它定义了类工厂方法alloc负责为那些需要与Objective-C的内存管理系统交互的对象实例和实例方法分配内存。 3、消息Objective-C使用一种不同的方法叫做消息。 [receiver message]receiver执行一个方法的对象 message 方法的名称 在任何情况下在方括号中代码都意味着你是在给一个对象或者一个类型发送一个消息即一个方法调用。 4、编译器指令以‘’字符开头的单词是编译器指令而不是执行代码。 5、关键字id  保存指向对象的指针的类型 id类型意味着变量myObject可以是任意类型的对象。所以当你编译这段代码时它的实际类型以及它所实现的方法编译器是不知道的;在Objective-C中所有的对象变量都是指针类型。id类型已经被预定义为指针类型所以不需要加一个星号。  nil是一个定义的常量指向没有对象的指针。 nil消息表示没有操作它们不做任何事情并且继续执行下一行代码。 在Objective-C中nil对象的作用等同于很多其他语言的NULL指针不同的地方在于在nil上调用方法不会导致程序崩溃或抛出异常。我们不用在调用一个对象的方法之前检查该对象是否为空。如果你调用了一个nil对象的方法并且该方法有返回值的话你会得到一个nil返回值。 BOOLYESNO 布尔型  SEL selector的缩写选择器保存一个Objective-C方法名表示的一种类型。 IMP  一个typedef用于‘一个指针它指向接收参数id、sel以及可能的其它参数并且返回id的函数’ Class 保存一个类的引用 6、Cocoa数字类型NSInteger NSUInteger CGFloat NSLog 7、开发文件.l UNIX man页面的文件 .m 程序源文件 .pch 预编译的头文件 .h 程序头文件 8、消息转发NSInvocation是封装为对象的一个Objective-C消息表达式它定义了设置和获取接受者、选择器以及封装的消息表达式的参数方法以及获取返回值的方法。 9、內省运行时支持在运行时发现对象的各种属性这个过程叫內省。 10、class执行一个类类型 11、copyNSObject的copy实现对象的拷贝。 浅复制、深赋值、可变复制(NSArray、NSDictionary、NSSet)、不可变赋值NSNumber、NSColor。 12、内存管理在堆上分配内存时不再需要就释放。 malloc -》free 13、消息细节1、嵌套  任何消息参数都可以用返回相应类型的一个消息表达式来替换。 消息传递的关键是编译器构建每个类和对象时所采用的数据结构。 每个类都包含以下两个必要元素  - 一个指向父类的指针。   - 一个调度表dispatch table。 该调度表将类的selector与方法的实际内存地址关联起来。   每个对象都有一个指向所属类的指针isa。通过该指针对象可以找到它所属的类也就找到了其全部父类。 2、向nil发送消息 向一个nil接收者发送一条消息没有任何效果 3、向self发送消息 一个对象的方法调用同一对象的另一个方法必须使用变量self作为消息接受者。 4、覆盖并向super发送消息 类可以通过在其implementation部分提供一个不同的实现来覆盖在其超类中定义的方法。 14、选择器编译器指令 selector() 将一个方法名称转换为一个SEL 一条消息的方法名部分有时候叫做选择器或方法选择器因为运行时使用它来选择要执行哪一个接收者方法。 15、效率编译器将你的方法转换为C函数的时候它在参数列表的前面添加了self和_cmd参数通过其IMP调用函数时要填充这些参数。直接函数调用快数倍。 16、类类型类型为class的变量用作指向类对象的指针。通过使用类名作作为接收者来调用类方法从而获得指向类对象的一个指针。 17、单体一个只有单个共享的实例的类。单体类通常用来包装操作系统服务或者用于检测面板这样的UI项。 18、框架框架是包的一种类型动态的载入共享的资源。总称存在frameworkName.framework的形式。 1、Objective-C或C框架 2、Cocoa框架 apple用来表示用Objective-C技术编写的mac程序的名称。它是一个伞式框架包含3个主要框架Foundation、Appkit、Core Data 3、AppKit框架 构建GUI应用程序所需要的类 4、Core Foundation 一个低级层的C语言框架对象有一个引用计数内存管理系统对象拥有相同的内存布局则可自由转换。 5、Core Graphics 用于Quartz 2D图形的低层级API。 6、Core Animation 动画框架 7、WebKit 8、ImageIO 9、Core Image 10、Core Audio 11、OpenGL 12、OpenAL 19、可变类和不可变类基本的类是不可变的但用于字符或用于字节的有可变与不可变之分。 20、类簇将复杂性隐藏到一个简单的接口的后面的一种方式。公有可见的类是一个抽象类。 类NSString、NSArray、NSDictionary、NSSet、NSNumber和NSData都是类簇。 21、NSString、NSMutableString字符的字节的一个数组后面跟着一个NULL字节。 如果我们在NSString对象上调用NSString类型对象不支持的方法编译器就会发出警告。 C字符串可以和NSString互换 NSMutableString是可变的子类 22、集合类NSArray、NSDictionary、NSSet以及其可变的子类都是集合类。 23、NSArrayC数组无边界检查 24、NSDictionary提供一种方式来处理键值对集合 25、NSSet对象集合实现一个数学集合 26、NSNumber存储并返回你喜欢的所有数字类型 27、NSNull没有对象 28、NSData字节数据、处理文件或图片等。 29、NSURLurl用来指定文件资源和网络资源的方向前进。 30、隐式循环使用NSArray的makeObjectsPerformSelectior创建隐式循环 31、NSEnumerator接收集合中的对象并将其传递出来每次一个并且使用nextObject方法发送完毕返回nil。 32、异常阻止程序继续执行的不正常条件。使用编译器指令try、catch、finally处理 33、分类分类允许我们向一个已有的类添加方法而不用子类化它并且不必访问类的源代码。 34、扩展扩展允许你通过在类的声明文件中添加一个接口部分从而在公有视野之外声明方法。提供一个内部的setter方法来访问你希望公有且只读的实例变量。 35、property语句 propertyattributestype name;attributes描述了如何编写访问器 #import Cocoa/Cocoa.h interface Photo : NSObject { NSString* caption; NSString* photographer; } property (retain) NSString* caption; property (retain) NSString* photographer; end Category类别 #import Cocoa/Cocoa.h interface NSString (Utilities) - (BOOL) isURL; end 36、assign、retain、copy这些属性影响到合成的setter如何构建。 37、readwrite和readonly读写、只读 38、nonatomic没有声明为nonatomic的特性默认都是atomic的。如果指定nonatomic编译器则合成访问器而不考虑线程安全性。  readwrite默认或者 readonly设置属性是可读写的拥有 getter/setter或是只读的只有 getter  assign默认retain 或 copy设置属性的存储方式  nonatomic不生成线程安全的代码默认是生成的没有 atomic 关键字  getter…setter…改变访问器默认的名字 39、协议协议是一组预定义的方法一个类可以选择来实现它们。 protocol-协议就是使用了这个协议后就要按照这个协议来办事协议要求实现的方法就一定要实现。   delegate-委托顾名思义就是委托别人办事就是当一件事情发生后自己不处理让别人来处理。 当一个A view 里面包含了B view  b view需要修改a view界面那么这个时候就需要用到委托了。   需要几个步骤  1。首先定一个协议  2。a view实现协议中的方法  3。b view设置一个委托变量   4。把b view的委托变量设置成a view意思就是 b view委托a view办事情。   5。事件发生后用委托变量调用a view中的协议方法       有很多时候是需要在B类口中来完成一些对A类的操作 这时就需要A设个代理让B来完成了这个在应用中很常见也很实用。             关于正式协议  . protocol protocolName . optional -(void)delegateMethodA . required -(void)delegateMethodB . // other methods . ... . end 正式协议类似于java的借口或抽象类。 optional 的方法可实现也可不实现但required 的方法必需实现。默认为required。    委托代理就是在在一个对象a内部设置一个 id类型的实例变量然后将另外一个对象b赋值给a的这个实例变量这样就可用通过操作实例变量a的这个id变量来调用b对象的方法。 采用一个协议的类必须实现协议的必需方法可以自由的实现或不实现协议的任何可选的方法。 其中required指令声明的方法是必需的。 40、TablePrinter为其它对象提供一个表格打印任务服务 TablePrinterDataSource 协议的任何对性爱那个打印出一个表格 41、引用计数内存管理提供了两种替代系统引用计数和自动垃圾收集。 原理每个对象存储了一个计数它是使用该对象的其它对象的数目。 1alloc, allocWithZone,new(带初始化) 为对象分配内存retainCount为“1”并返回此实例 2release retainCount 减“1”减到“0”时调用此对象的dealloc方法 3retain retainCount 加“1” 4copy,mutableCopy 复制一个实例retainCount数为“1”返回此实例。所得到的对象是与其它上下文无关的独立的对象(干净对象)。 5autorelease 在当前上下文的AutoreleasePool栈顶的autoreleasePool实例添加此对象由于它的引入使Objective-C非GC管理环境由全手动内存管 理上升到半自动化。AutoreleasePool使Objective-C成为内存管理半自动化语言。 在设置器里面使用autorelease方法会更加安全一些因为要改变的变量的新旧两个值可能指向的是同一个对象。而你可能不希望立刻释放实际上你要保留的对象。 42、所有权你创建了一个对象你拥有它。 通过向其他人所创建的对象发送一条retain消息你拥有它。 当你使用完时必须发送release消息来释放所有权。 当不再使用时必须销毁它。 43、垃圾收集通过一个运行程序来找到不再使用的对象并销毁他们并将他们的字节返给堆。。  . 释放一个对象的引用实际上有两种方法release 和 autorelease。标准的release会立刻释放对象的引用。autorelease会等一会儿才释放但是引用实际上会一直存在直到当前方法结束除非你添加自定义的代码来明确的改变它。  dealloc方法在一个对象从内存中删除时被调用。通常在这个方法里面释放所有对象里的实例变量。 分配的alloc对象或者是保留retain在一些地方的对象都需要给他们发送一个release消息。 44、强引用和弱引用在引用计数之下一个对象通过保留另一个对象形成对其的强引用这确保了被保留的对象保持活的状态直到保留对象 使用完它并释放它。相反一个对象通过保留另一个对象的指针而不保留对象本身形成对另一个对象的弱引用。 45、XCode、Objective-C、CocoaXCode你可以把它看成是一个开发环境就好像Visual Studio或者Netbeans或者SharpDevelop一样的玩意。你可以将Interface Builder认为是Visual Studio中用来画界面的那部分功能单独提出来的程序。     Objective-C这是一种语言就好像c是一种语言Java是一种语言c#是一种语言莺歌历史也是一种语言一样。     Cocoa是一大堆函数库就好像MFC、.NET、Swing这类玩意人家已经写好了一堆现成的东西你只要知道怎么用就可以了。  46、#import、interface#import      你可以把它认为是#include一样的。但是最好用#import记住这个就行了。   #import指令会自动防止将同一个文件导入多次。    interface 接口指令 类的接口interface通常存放在类似ClassName.h的文件中定义实例变量protected和公用public方法。  类的实现存放在ClassName.m这样的文件中它包含了这些方法的实际实现代码。它通常还定义了客户类不能访问的私有private实体变量、方法。 47、方法调用调用对象的方法 output [object methodWithOutput]; output [object methodWithInputAndOutput:input]; 调用类的方法创建对象 id myObject [NSString string]; 或 NSString* myString [NSString string]; 嵌套调用 [NSString stringWithFormat:[prefs format]]; 多输入参数 声明 -(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; 调用 BOOL result [myData writeToFile:/tmp/log.txt atomically:NO]; 48、访问器点语法只能使用在设置器setter和获取器getter上而不能用于普通方法。 setter [photo setCation:”Day at the Beach”]; output [photo caption]; 点操作符 photo.caption ”Day at the Beach”; output photo.caption; 只有当访问器不存在的时候synthesize才会自动生成访问器所以即使是使用synthesize声明了一个属性你仍然可以实现自定义的getter和setter。编译器只会自动生成你没有自定义的方法。 49、创建对象创建自动释放的对象 NSString* myString [NSString string]; 手工alloc创建 NSString* myString [[NSString alloc] init]; 注[NSString alloc] 是NSString类本身的alloc方法调用。这是一个相对低层的调用它的作用是分配内存及实例化一个对象。 [[NSString alloc] init] 调用新创建对象的init方法。init方法通常做对象的初始化设置工作比如创建实例变量。 50、内存管理 //string1 将被自动释放 NSString* string1 [NSString string]; //必须在用完后手工释放 NSString* string2 [[NSString alloc] init]; [string2 release]; 51、allocalloc方法调用作用是分配内存及实例化一个对象。调用新创建对象的init方法通常做对象的初始化设置工作比如创建实例变量。 如果你通过手工alloc的方式创建一个对象之后你需要release这个对象。同样你也不能手工释放(release)一个能自动释放(autoreleased)的对象因为这将会使你的应用程序崩溃。 52、IBOutlet、IBAction如果你希望在Interface Builder中能看到这个控件对象那么在定义的时候前面加上IBOutlet在IB里就能看到这个对象的outlet如果你希望在Interface Builder里控制某个对象执行某些动作就在方法前面加上(IBAction)。 相关面试 1、obj-c有多重继承么?不是的话有什么替代方法? cocoa中所有的类都是NSObject的子类  多继承在这里是用protocol委托代理来实现的  你不用去考虑繁琐的多继承,虚基类的概念.  ood的多态特性  在obj-c中通过委托来实现.   2、obj-c有私有方法么?私有变量呢   objective-c -类里面的方法只有两种, 静态方法和实例方法. 这似乎就不是完整的面向对象了,按照OO的原则就是一个对象只暴露有用的东西.  如果没有了私有方法的话, 对于一些小范围的代码重用就不那么顺手了. 在类里面声名一个私有方法   interface Controller :NSObject { NSString *something; } (void)thisIsAStaticMethod; (void)thisIsAnInstanceMethod;end interface Controller(private) - (void)thisIsAPrivateMethod; end private可以用来修饰私有变量  在Objective‐C中所有实例变量默认都是私有的所有实例方法默认都是公有的 。 3、c和obj-c如何混用 1、obj-c的编译器处理后缀为m的文件时可以识别obj-c和c的代码处理mm文件可以识别obj-c,c,c代码但cpp文件必须只能用c/c代码而且cpp文件include的头文件中也不能出现obj-c的代码因为cpp只是cpp 。    2、在mm文件中混用cpp直接使用即可所以obj-c混cpp不是问题 。 3、在cpp中混用obj-c其实就是使用obj-c编写的模块是我们想要的。 4、目标-动作机制 目标是动作消息的接收者。一个控件或者更为常见的是它的单元以插座变量参见插座变量部分  的形式保有其动作消息的目标。 动作是控件发送给目标的消息或者从目标的角度看它是目标为了响应动作而实现的方法。 程序需要某些机制来进行事件和指令的翻译。这个机制就是目标-动作机制。  5、#import和#include的区别class代表什么class一般用于头文件中需要声明该类的某个实例变量的时候用到在m文件中还是需要使用#import而#import比起#include的好处就是不会引起重复包含。 6、谈谈Object-C的内存管理方式及过程1、当你使用new,alloc和copy方法创建一个对象时,该对象的保留计数器值为1.当你不再使用该对象时,你要负责向该对象发送一条release或autorelease消息.这样,该对象将在使用寿命结束时被销毁. 2、当你通过任何其他方法获得一个对象时,则假设该对象的保留计数器值为1,而且已经被设置为自动释放,你不需要执行任何操作来确保该对象被清理.如果你打算在一段时间内拥有该对象,则需要保留它并确保在操作完成时释放它. 3、如果你保留了某个对象,你需要(最终)释放或自动释放该对象.必须保持retain方法和release方法的使用次数相等. 7、内存管理 Autorelease、retain、copy、assign的set方法和含义1、你初始化(alloc/init)的对象你需要释放(release)它。例如 NSMutableArray aArray [[NSArray alloc] init]; 后需要 [aArray release];2、你retain或copy的你需要释放它。例如 [aArray retain] 后需要 [aArray release];3、被传递(assign)的对象你需要斟酌的retain和release。例如 obj2 [[obj1 someMethod] autorelease];对象2接收对象1的一个自动释放的值或传递一个基本数据类型(NSIntegerNSString)时你或希望将对象2进行retain以防止它在被使用之前就被自动释放掉。但是在retain后一定要在适当的时候进行释放。 关于索引计数(Reference Counting)的问题 retain值 索引计数(Reference Counting) NSArray对象会retain(retain值加一)任何数组中的对象。当NSArray被卸载(dealloc)的时候所有数组中的对象会 被 执行一次释放(retain值减一)。不仅仅是NSArray任何收集类(Collection Classes)都执行类似操作。例如 NSDictionary甚至UINavigationController。Alloc/init建立的对象索引计数为1。无需将其再次retain。 [NSArray array]和[NSDate date]等“方法”建立一个索引计数为1的对象但是也是一个自动释放对象。所以是本地临时对象那么无所谓了。如果是打算在全Class中使用的变量(iVar)则必须retain它。缺省的类方法返回值都被执行了“自动释放”方法。(*如上中的NSArray)在类中的卸载方法“dealloc”中release所有未被平衡的NS对象。(*所有未被autorelease而retain值为1的) 8、浅拷贝和深拷贝区别是什么简单的来说就是在有指针的情况下浅拷贝只是增加了一个指针指向已经存在的内存而深拷贝就是增加一个指针并且申请一个新的内存使这个增加的指针指向这个新的内存采用深拷贝的情况下释放内存的时候就不会出现在浅拷贝时重复释放同一内存的错误。 9、C和obj-c 如何混用1、obj-c的编译器处理后缀为m的文件时可以识别obj-c和c的代码处理mm文件可以识别obj-c,c,c代码但cpp文件必须只能用c/c代码而且cpp文件include的头文件中也不能出现obj-c的代码因为cpp只是cpp。 2、在mm文件中混用cpp直接使用即可所以obj-c混cpp不是问题。 3、在cpp中混用obj-c其实就是使用obj-c编写的模块是我们想要的。 如果模块以类实现那么要按照cpp class的标准写类的定义头文件中不能出现obj-c的东西包括#import cocoa的。实现文件中即类的实现代码中可以使用obj-c的东西可以import,只是后缀是mm。 如果模块以函数实现那么头文件要按c的格式声明函数实现文件中c函数内部可以用obj-c但后缀还是mm或m。 总结只要cpp文件和cpp include的文件中不包含obj-c的东西就可以用了cpp混用obj-c的关键是使用接口而不能直接使用 实现代 码实际上cpp混用的是obj-c编译后的o文件这个东西其实是无差别的所以可以用。obj-c的编译器支持cpp 10、Objective-C中类别和类扩展的区别category和extensions的不同在于后者可以添加属性。另外后者添加的方法是必须要实现的。 extensions可以认为是一个私有的Category。 11、我们说的Objective-C是动态运行时语言是什么意思多态。 主要是将数据类型的确定由编译时推迟到了运行时。 这个问题其实浅涉及到两个概念运行时和多态。 简单来说运行时机制使我们直到运行时才去决定一个对象的类别以及调用该类别对象指定方法。 多态不同对象以自己的方式响应相同的消息的能力叫做多态。意思就是假设生物类life都用有一个相同的方法-eat; 那人类属于生物猪也属于生物都继承了life后实现各自的eat但是调用是我们只需调用各自的eat方法。 也就是不同的对象以自己的方式响应了相同的消息响应了eat这个选择器。 因此也可以说运行时机制是多态的基础 12、Objective-C堆和栈的区别管理方式对于栈来讲是由编译器自动管理无需我们手工控制对于堆来说释放工作由程序员控制容易产生memory leak。 申请大小 栈在Windows下,栈是向低地址扩展的数据结构是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的在 WINDOWS下栈的大小是2M也有的说是1M总之是一个编译时就确定的常数如果申请的空间超过栈的剩余空间时将提示overflow。因 此能从栈获得的空间较小。 堆堆是向高地址扩展的数据结构是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的自然是不连续的而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见堆获得的空间比较灵活也比较大。 碎片问题对于堆来讲频繁的new/delete势必会造成内存空间的不连续从而造成大量的碎片使程序效率降低。对于栈来讲则不会存在这个问题因为栈是先进后出的队列他们是如此的一一对应以至于永远都不可能有一个内存块从栈中间弹出 分配方式堆都是动态分配的没有静态分配的堆。栈有2种分配方式静态分配和动态分配。静态分配是编译器完成的比如局部变量的分配。动态分配由alloca函数进行分配但是栈的动态分配和堆是不同的他的动态分配是由编译器进行释放无需我们手工实现。 分配效率栈是机器系统提供的数据结构计算机会在底层对栈提供支持分配专门的寄存器存放栈的地址压栈出栈都有专门的指令执行这就决定了栈的效率比较高。堆则是C/C函数库提供的它的机制是很复杂的。
http://www.dnsts.com.cn/news/170811.html

相关文章:

  • 网站源码上传图片出错淘宝网页制作教程
  • 东莞网站建设+信科网络wordpress奖励插件
  • 跨境电商建站工具专业做网站较好的公司广州
  • 天津集体建设用地出售 网站wordpress用户前端发文
  • 做兼职在什么网站找比较好浙江省建设培训中心网
  • 文化产品电商网站建设规划sqlite 网站开发
  • 网站开发组件拖拽适用于个人网站的域名
  • 建设网站微商城wordpress 插件 错误
  • 网站哪里有做的什么网站做美式软装设计方案
  • 100个免费推广网站的排名河北廊坊百度建站
  • 微商怎么开通wordpress 数据库优化插件
  • 设计网站的一般过程自己在线制作logo
  • 佛山新网站建设平台网站备案填写网站名称
  • 江西网站制作的公司哪家好wordpress dota主题
  • 网站开发用什么技术那个大学业做网站
  • 台州椒江做网站阿里云服务器建立网站吗
  • 百度提交网站收录wordpress自动电影釆集
  • 长安网站建设好吗网站建设这块是怎么挣钱的
  • 手机网站制作教程视频seo外推上排名
  • 营销型网站建设设计服务android 网站开发
  • 广州在线网站制作推荐龙岗网站app建设
  • 深圳网站建设制作设计国企设计公司有哪些
  • 网站建设公司推广方式专业制作网站的基本步骤
  • 网站建设合同的注意事项网站建设综合实训总结
  • 网站设计报告模板及范文郑州东区做网站电话
  • 服装设计公司背景外贸seo是什么意思
  • 句容网站建设公司苏州网站建设书生商友
  • 坑梓网站建设方案大前端Wordpress图片主题top
  • 企业网站建设优化企业库
  • 做教程网站如何查用户搜索redis wordpress 内存