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. Template pattern模板方法模式

    1>模板模式定义了算法的步骤,把这些步骤的实现延续到子类 2>模板模式为我们提供了一个代码复用的技巧 3>模板抽象类中可以定义具体方法.抽象方法和钩子方法 4>为了防止子类改变 ...

  2. 剑指offer--29.从上往下打印二叉树

    层序遍历,队列 ------------------------------------------------------------------------------------- 时间限制:1 ...

  3. Activity步骤

    Android项目结构 src:Java源代码所在的文件夹 gen:自动生成的R.java所在文件夹 Android开发工具包:android.jar res:资源文件夹,包含3种 drawable: ...

  4. 高性能高并发服务器架构设计探究——以flamigo服务器代码为例

    这篇文章我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序. 所谓高性能就是服务器能流畅地处理各个客户端的连接并尽量低延迟地应答客户端的请求:所谓高并发,指的是服务器可以同时 ...

  5. js实现城市二级联动列表

    这个是一个同事写的,我看着有用,就cv下来了. 程序功能主要逻辑是: 1.当一级标签市显示默认状态 '-请选择-'时,二级标签要隐藏 2.一级标签选中城市时,二级标签显示在页面,并列出响应市区 3.当 ...

  6. [leetcode]_Binary Tree Level Order Traversal I && II

    题目:给定一棵二叉树,对其进行层次遍历,将遍历结果存入二维链表中. 思路:二叉树的层次遍历关键在于使用Queue. 复习: Queue的定义.LinkedList实现了Queue接口,因此可用Link ...

  7. bzoj 2435 道路修建

    Written with StackEdit. Description 在 \(W\) 星球上有 \(n\) 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是 ...

  8. IOS Quartz 2D 学习(1)

    IOS提供两种创建图形的途径: 1.OpenGL. 2.Quartz.Core Animation.UIKit图形支持. UIKit的图形系统 1.视图绘画周期: DrawRect方法,在任何时候,当 ...

  9. matlab数据流仿真和时间流仿真

    simulink 使用的动态系统仿真,仿真需要求状态方程和输出方程,关键是求状态方程,而状态方程的求解有多种算法,可变步长和定步长,所以仿真时对求解器的选择和步长的设置就比较重要. 所谓基於数据流的仿 ...

  10. numpy之统计函数和布尔数组方法

    统计函数 可以通过numpy的统计函数对整个数组或者某个轴向的数据进项统计计算. 所谓的轴向,其实就是n维向量的某一维.或者说某一行,某一列. sum对数组(向量)中全部或某个轴向的元素求和,长度为0 ...