Objective-C 基础语法详解

雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/368

如果想从事iphone开发的话 Objective-C 这门语言就不得不学会 我们都知道C语言是没有面向对象的 而Object-C 则是ANSI C 的一个严格超集 它是具有面向对象的特性的 由于IPHONE 的成功 让这门语言现在非常的火热 今天笔者为大家介绍一下在xcode中 使用Objective-C 的基本语法。

1.打开mac系统中强大的Xcode软件 单击Create a new Xcode project  创建一个Xcode项目。

2. 选择“View-based Application” 因为只是介绍基本语法 所以 “View-based Application” 已经够用了 。 选择完后  点击Next 。

3.输入相应的信息后点击Next。



Product Name: 指产品名称 ,可以随意命名。

Company Identifier: 公司标识符,一般命名规则为 “com.公司名”

Bundle Identifier: 指包标识符,用于唯一标识应用程序,默认会根据公司标识符和产品名来组合生成

Device Family: 指该应用支持的设备类型,共三个选项:iPhone、iPad、Universal(即iPhone、iPad通用)

Include Unite Tests: 是否包含单元测试代码模板,如果勾选,Xcode会帮助生成单元测试代码模板

这样 我们的第一个项目就创建好了,接下来开始为大家介绍 Objective-C 的语法

在项目视图中 打开 helloWorldViewController.m文件 找到 - (void)viewDidLoad 方法 (这个方法每次启动程序都会调用 )

学过C++的朋友应该都知道 新写一个类会有 一个.h 声明类的变量 方法等 .cpp 用来实现方法  Objective-C   则也类似C++  .h 声明类的变量 方法  .m 用来实现方法

在c语言中 我们在控制台输出信息是用printf()   Java语言则是 System.out.println() 而Objective-C  则是用 NSLog();

打开控制台的快捷键为 command + shift + R

  1. //
  2. //  helloWorldViewController.m
  3. //  helloWorld
  4. //
  5. //  Created by  宣雨松 on 11-7-4.
  6. //  Copyright 2011年 __MyCompanyName__. All rights reserved.
  7. //
  8. #import "helloWorldViewController.h"
  9. #import "MyClass.h"//导入新写的类
  10. @implementation helloWorldViewController
  11. - (void)dealloc
  12. {
  13. [super dealloc];
  14. }
  15. - (void)didReceiveMemoryWarning
  16. {
  17. // Releases the view if it doesn't have a superview.
  18. [super didReceiveMemoryWarning];
  19. // Release any cached data, images, etc that aren't in use.
  20. }
  21. #pragma mark - View lifecycle
  22. // Implement viewDidLoad to do additional setup after loading the view, typically from a
  23. nib.
  24. - (void)viewDidLoad
  25. {
  26. [super viewDidLoad];
  27. //打印一个字符串
  28. NSLog(@"only log hello world");
  29. //字符串相加
  30. NSString *str;
  31. NSString *str1 = @"plusA ";
  32. NSString *str2 = @"+";
  33. NSString *str3 = @"plusB";
  34. // 把str1 str2 str3 相加后赋值给str %@ 表示是一个对象 这里也可以用 %d  %s 在这里就不一一举例了。
  35. str = [NSString stringWithFormat:@"%@ %@ %@",str1,str2,str3];
  36. //打印出str
  37. NSLog(@"string plus %@",str);
  38. //self 好比C++ 或者 java 语言中的 this 指针 指向本类 这里调用了本类的 putString方法 将字符串"pass string"作为参数传递了进去
  39. [self putString:@"pass string"];
  40. //在内存中new了一个MyClass的对象  alloc是在内存中 分配内存  init 则是初始化 这样写 属于规定写法
  41. MyClass * myclass = [[MyClass alloc] init];
  42. // 用myclass指针调用 类中putclass方法 将字符串 "pass class string"作为参数传递进去
  43. [myclass putclass:@"pass class string"];
  44. //调用类中静态方法 将字符串"static pass class string "作为参数传递进去
  45. [MyClass staticPutClass:@"static pass class string"];
  46. }
  47. - (void)viewDidUnload
  48. {
  49. [super viewDidUnload];
  50. // Release any retained subviews of the main view.
  51. // e.g. self.myOutlet = nil;
  52. }
  53. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
  54. {
  55. // Return YES for supported orientations
  56. return (interfaceOrientation == UIInterfaceOrientationPortrait);
  57. }
  58. //自己写的类方法输出字符串
  59. -(void)putString:(NSString *)str
  60. {
  61. NSLog(@"%@",str);
  62. }
  63. @end

//这个类的声明

  1. #import <UIKit/UIKit.h>
  2. @interface helloWorldViewController : UIViewController {
  3. }
  4. -(void) putString:(NSString*)str;
  5. @end

MyClass类的实现

  1. #import "MyClass.h"
  2. @implementation MyClass
  3. //方法前是-号的说明这是一个实力方法 必需本类new过才能调用
  4. -(void)putclass:(NSString *)str
  5. {
  6. NSLog(@"%@",str);
  7. }
  8. //方法前是+号的说明这是一个类方法 这种方法无权访问实例变量
  9. //这里声明了一个静态方法 无需本类new过也可以调用
  10. +(void)staticPutClass:(NSString *)str{
  11. NSLog(@"%@",str);
  12. }
  13. @end

MyClass类的声明

  1. #import <Foundation/Foundation.h>
  2. @interface MyClass :NSObject{
  3. }
  4. -(void) putclass : (NSString *) str;
  5. +(void) staticPutClass :(NSString *) str;
  6. @end

这样Objective-C 基本的语法就给大家介绍完了, 希望有兴趣的朋友可以和我一起讨论 我们可以一起进步。

Objective-C 基础语法log打印那些事儿(一)的更多相关文章

  1. javascript中正则表达式的基础语法

    × 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...

  2. Objective-C基础语法快速入门

    Objective-C基础语法快速入门 2010-11-04 16:32 折酷吧 zheku8 字号:T | T 假如我们对面向对象的思维已经C语言都很熟悉的话,对于我们学习Objective-C将会 ...

  3. Python学习的个人笔记(基础语法)

    Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...

  4. JavaScript 正则表达式基础语法

    前言 正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作.通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题.javascript中的正则表达式作为相当 ...

  5. python基础语法及知识点总结

    本文转载于星过无痕的博客http://www.cnblogs.com/linxiangpeng/p/6403991.html 在此表达对原创作者的感激之情,多谢星过无痕的分享!谢谢! Python学习 ...

  6. 【Scala学习之一】 Scala基础语法

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  7. Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

    Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...

  8. 1.scala基础语法总结

    Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; pr ...

  9. Ajax基础知识 浅析(含php基础语法知识)

    1.php基础语法    后缀名为.php的文件 (1) echo   向页面中输入字符串  <?php    所有php相关代码都要写在<?php ?>这个标签之中 echo &q ...

随机推荐

  1. Java基础学习-IO流

    package IObasics; import java.io.FileWriter; import java.io.IOException; /*IO流 * 通过数据流.序列化和文件系统提供系统输 ...

  2. JavaScript遍历树结构

    遍历 function parseTreeJson(treeNodes){ if(!treeNodes||!treeNodes.length)return; for(let i=0;i<tree ...

  3. PostgreSQL窗口函数(转)

    转自:http://time-track.cn/postgresql-window-function.html PostgreSQL提供了窗口函数的特性.窗口函数也是计算一些行集合(多个行组成的集合, ...

  4. [置顶] Android ShareSDKQQ 第三方登录so easy?

    昨天群里有个群友看到我之前做的那个qq第三方登录怎么做的,于是乎思考了一下,还是决定写一篇博客记录下,其实都不难的,其实之前我又写到FaceBook的第三方登录不知道看下这Android集成FaceB ...

  5. js 下获取子元素的方法

    笔记核心: firstElementChild只会获取元素节点对象,从名称就可以看出来,firstChild则可以获取文本节点对象(当然也可以获取元素节点对象),比如空格和换行都被当做文本节点. js ...

  6. input光标位置不居中问题

    文本输入框默认在谷歌,火狐浏览器中,光标是居中显示的.但在IE7中一开始会在顶部闪烁(输入文字后光标居中),加上行高就可以,值为文本框的高度. 注意要加*号,否则在谷歌浏览其中光标会在顶部闪烁. *l ...

  7. SSH框架(2)

    个人分类: Java面试   Struts 谈谈你对Struts的理解. 答: 1.struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为Acti ...

  8. Redis设计与实现 (二): 链表

    Redis实现为双链表结构, 列表键的底层实现之一就是链表,  发布与订阅, 慢查询, 监视器等功能都用到了链表. Redis本身也使用链表维持多个客户端. 节点定义, 位于 adlist.h/lis ...

  9. margin和padding理解

    W3C组织建议把所有网页上的对像都放 在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层. 盒模型主要定义四个区域:内容 (content).边框 ...

  10. LeetCode Delete Operation for Two Strings

    原题链接在这里:https://leetcode.com/problems/delete-operation-for-two-strings/description/ 题目: Given two wo ...