博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WP开发 - 与iOS开发的一些区别
阅读量:4108 次
发布时间:2019-05-25

本文共 2725 字,大约阅读时间需要 9 分钟。

1、字符串

iOS是NSString,必须加*号,指针的形式,同时它是不可变的,可变的是另外一种类型: NSMutableString

WP是string,引用的形式,不加*号;可变使用Stringbuilder

2、逻辑真假

iOS:BOOL, 值取YES 、 NO

WP:bool,值取 true、false

3、单例模式

c#中有三种写法:

第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我……

public class Singleton

{
    private static Singleton _instance = null;
    private Singleton(){}
    public static Singleton CreateInstance()
    {
        if(_instance == null)

        {

            _instance = new Singleton();
        }
        return _instance;
    }
}

第二种考虑了线程安全,不过有点烦,但绝对是正规写法,经典的一叉 

public class Singleton

{
    private volatile static Singleton _instance = null;
    private static readonly object lockHelper = new object();
    private Singleton(){}
    public static Singleton CreateInstance()
    {
        if(_instance == null)
        {
            lock(lockHelper)
            {
                if(_instance == null)
                     _instance = new Singleton();
            }
        }
        return _instance;
    }
}
第三种可能是C#这样的高级语言特有的,实在懒得出奇

public class Singleton

{

    private Singleton(){}

    public static readonly Singleton instance = new Singleton();
}  

iOS主要有两种:

第一种:

在上面的代码中(用到了关键字@synchronized是为了保证我们的单例的线程级别的安全,可以适用于多线程模式下。)static变量sharedCLDelegate用于存储一个单例的指针,并且强制所有对该变量的访问都必须通过类方法   +(id)sharedInstance,在对   +(id)sharedInstance第一次调用时候完成实例的创建。这里值得留意一下的是,上面代码中用的是[[selfclass] alloc],而不是 [MySingletonClass alloc],一般情况下这两种写法产生同样的效果,但是这里这样做是为了更好的利用OOP的性质,[selfclass]可以动态查找并确定类的类型从而便于实现对该类的子类化。

第二种:

使用dispatch_once,这个方法的意思是在应用程序生命周期内,这方法只执行一次,这就是ARC下结合GCD的一个单例的代码

但是iOS的单例模式有个弊端,它不能private Singleton(){}这样声明构造函数为私有,仍然还是可以通过 [[Singleton alloc] init]来使用。

4、类方法和实例方法

iOS:"+"表示类方法, "-"表示实例方法

WP: static表示类方法,不加static表示实例方法

参数的写法也有很大的区别,C#跟C/C++是一家子,写法一样。

5、宏定义

iOS:可以使用#define来进行常量的定义,跟C、C++一样

WP: 不支持define的定义,定义成常量的形式

6、静态方式与单例方式

含有变量或者属性操作的使用单例模式。

没有变量或者属性操作就是用静态方法。

7、字符串转化到其他数据类型

比如转化为整数

iOS:使用起来比较直观,直接调用NSString的属性。   Obj.integerValue   

C#:就不那么直观了,需要将string作为参数,跟C语言类似。

8、容器遍历

http://blog.csdn.net/xiaoyuemian/article/details/2958077

c#, 常用的有Array ArrayList或 List< T>,其中ArrayList会涉及类型安全性以及装箱、拆箱操作等,遍历方法foreach in。除了Array,其他都是可变的。

oc,常用的有NSArray,可变NSMutableArray;NSDictionary-NSMutableDictionary,他们都是类型不安全的,OC中没有类型安全容器,遍历方法 for in。

9、方法定义的区别

C#跟C、c++一脉相承

OC使用起来对参数的意义更明了。

10、属性定义

OC中比较简单,是要声明property属性即可,省去了比较繁琐的set和get方法。

相当于定义了以下的代码:

访问控制
readwrite 说明了属性是可读写的。
readonly  说明属性是只读的,也就是只会生成访问器

如果在自己被赋值时,需要做额外操作,则在setProperty里实现

C#中需要自己定义getter和setter。

这是老的定义方式,新的方式就简单了:

如果只需要get或者set,则只定义相应的即可

如果在自己被赋值时,需要做额外操作,则在set里实现

11、基类以及自身使用

c#: base,this

oc: super, self

12、格式化

C#: {0},{1}

oc: %@, %ld

13、缓存文件查看

iphone: iOS开发时,数据是写入App的独立存储空间的,它的查看分模拟器和真机两种情况

  模拟器的话,可以像查看mac的磁盘文件一样,根据数据直接打开

  真机的话,就需要借助一些工具,比如itools(查看沙盒文件的功能需要收费),iFunBox

WP: IsoStoreSpy
IsoStoreSpy 的官方网址 http://isostorespy.codeplex.com/

开发Windows Phone App ,有时会使用IsolatedStorageFile 写入APP 的独立空间,然而这个为APP所提供的独立存取空间,却不能像我们开数据夹一样的方便查看,可以借助IsoStoreSpy工具查看。

参考: http://www.it165.net/pro/html/201310/7575.html

你可能感兴趣的文章
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>