大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
C++和Object-C是在我们IOS学习当中经常用到的,想来大家在IOS培训中对它们都有一定的的了解,本篇ios教程内容将给大家详细讲解ios中如何将C++和Object-C混合编程开发IOS软件。Using C++ With Objective-C 苹果的Objective-C编译器允许用户在同一个源文件里自由地混合使用C++和Objective-C,混编后的语言叫Objective-C++。有了它,你就可以在Objective-C应用程序中使用已有的C++类库。Objective-C和C++混编的要点 在Objective-C++中,可以用C++代码调用方法也可以从Objective-C调用方法。在这两种语言里对象都是指针,可以在任何地方使用。例如,C++类可以使用Objective-C对象的指针作为数据成员,Objective-C类也可以有C++对象指针做实例变量。下例说明了这一点。 注意:Xcode需要源文件以".mm"为扩展名,这样才能启动编译器的Objective-C++扩展。复制代码1./* Hello.mm2. * Compile with: g++ -x objective-c++ -framework Foundation Hello.mm -o hello3. */4.#import Foundation/Foundation.h5.class Hello {6.private:7. id greeting_text; // holds an NSString8.public:9. Hello() {10. greeting_text = @"Hello, world!";11. }12. Hello(const char* initial_greeting_text) {13. greeting_text = [[NSString alloc] initWithUTF8String:initial_greeting_text];14. }15. void say_hello() {16. printf("%s\n", [greeting_text UTF8String]);17. }18.};19.@interface Greeting : NSObject {20.@private21. Hello *hello;22.}23.- (id)init;24.- (void)dealloc;25.- (void)sayGreeting;26.- (void)sayGreeting:(Hello*)greeting;27.@end28.@implementation Greeting29.- (id)init {30. if (self = [super init]) {31. hello = new Hello();32. }33. return self;34.}35.- (void)dealloc {36. delete hello;37. [super dealloc];38.}39.- (void)sayGreeting {40. hello-say_hello();41.}42.- (void)sayGreeting:(Hello*)greeting {43. greeting-say_hello();44.}45.@end46.int main() {47. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];48. 49. Greeting *greeting = [[Greeting alloc] init];50. [greeting sayGreeting]; // Hello, world!51. 52. Hello *hello = new Hello("Bonjour, monde!");53. [greeting sayGreeting:hello]; // Bonjour, monde!54. 55. delete
创新互联建站主要从事成都网站设计、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务福建,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
在ios的OC和Swift混合开发无非是2种,一种是在OC的项目中使用Swift语言开发,这里就需要创建Swift文件(或者引用Swift写的的第三方库),另一种是在Swift项目中使用OC语言开发,这里就需要创建OC文件,(或者引用OC写的的第三方库)
首先我们在一个已有的OC的项目中,创建一个Swift文件
这里Xcode就会自动提示我们如:图1
Would you like to configure an Objective-C bridging header?
Adding this file to ocProjectUseSwift will create a mixed Swift and Objective-C target. Would you like Xcode to automatically configure a bridging header to enable classes to be accessed by both languages?
提示我们创建一个桥接的头文件,当我点击 “ Create Bridging Header”,Xcode就给我们自动创建,自动创建的规则是:项目名+ "-Bridging-Header.h" 如图2
同时在项目中创建一个Swift文件
然后在在 targets - Build Settings - Packaging 中设置Defines Module 为YES
设置完后开始使用,怎么在oc中使用Swift的类呢?
重点: 在文件中引用 #import "ocProjectUseSwift-Swift.h" 记住不是我创建的SecondVC.swift,是“项目名-Swift.h"文件名 ,引入这个文件就引入了所有的Swift文件内的类、方法、属性
说明:这个文件是系统自动创建,自动添加所有我们创建的Swift的类的方法和属性
前提是要在方法和属性前面要加@objc 如图3:
用@objc声明好之后,在我们引用的是“项目名-Swift.h"文件名的 #import "ocProjectUseSwift-Swift.h" 内就看到有标记了如图4
这里分了3块,红色和绿色标记框内是我们自己标记的oc可用的属性和方法,蓝色框内是系统自己生成的oc可以初始化方法
具体使用就在oc文件中,如图5:
此事,在这个OC创建的项目中,我们创建的Swift文件怎么使用OC创建的类呢?
这里就用到我们创建的桥接头文件了,在图2中的桥接头文件,引入OC的头文件,如图6
就这样很简单,所以Swift文件的类都可以使用这个OC文件内的类了,使用起,和OC调用OC的类一样,如如图7和图8
Swift的项目中,第一次创建OC的文件,此时系统会自动帮我们创建桥接头文件,如图9
然后就有了和图2一样的桥接头文件,剩下的就和图6一样,在桥接头文件内引入头文件,即可使用OC的类,第三方库如果也是OC写的,在引入的时候也自动会加这个桥接头文件,当然一个项目只能加一次,加过的就不需要加了
现在市场上存在的几种开发方式如下:
a.web网页加壳生成APP
web网页加壳生成APP的开发方式,先花几百块钱买个现成的手机网站模板,在加壳打包一个APP只需要5分钟,但是做出来的效果很差,耗流量,浏览体验极差,访问速度慢等等。部分开发商利用客户不懂,把这种5分钟速成的东西,当成原生态开发的APP去欺骗创业者。卖几千到几万的价格。而创业者很多时候还自以为捡了便宜(问了十几家这家最便宜)。
b.Web网页+原生态混编(网页部分占80%以上)
混编方式的APP效果比第一种稍好。但是如果要做出接近原生态的效果,需要不断的优化和改版,花的钱不比原生态少。而如果不对网页和系统优化,只是简单的拼凑。那么做出来的效果和web加壳的差不多.
c.HTML5开发
成本大概是原生态APP的50%到30%,也是比较接近原生开发能达到效果的一种方式。但受到很多限制。各大平台兼容性还不足,相对来说还处于过渡期,同时比较耗系统资源。在低配的手机上更卡。手机淘宝的APP目前就是HTML5+原生态混编的,相对来说在很多低配的手机上还是比较卡的。最近优化了很多,但是早期的表现很不尽人意。Facebook和京东都尝试过HTML5,同时也吃了不成熟的亏。HTML5的未来或许是美好的,但是这期间的试错成本小公司不一定承受得起。
d.原生态开发
是目前最常用和最成熟的方式。越重视细节成本越高。一般根据具体功能要求一个APP的开发成本从几千块到几千万不等。
根据实际情况,想做一个高性能的H5 iOS应用,那么问题来了~应该用哪一款的混合开发框架最好?好用且后期维护也方便
如果对机械设备有需求的,请到高臻机械网站去了解一下。
最直接的方法是在C++文件里把功能入口封装成函数在Objective C里调用。
但是个人推荐还是用Objective C++吧(也就是不用.m而是.mm文件,这个只能新建.m文件以后手动改名)。Objective C++同时支持Objective C和C++,而且Objective C里结构体中不能有对象的问题也解决了,C API的那些让人头大的结构体初始化也可以用C++语法很简单地搞定。
不过Objective C++有一个缺点就是Refractor会罢工,所以我从来不用Refractor...
在IOS开发中,可以通过webView来加载HTML文件
步骤如下:
1.需要有一个webView,可以通过storyboard拖拽一个 或者 alloc 一个(我在这里是拖拽了一个),是否要给webView设置delegate ,根据自己的需要决定(如果只是展示页面可以忽略)。
webView
2.创建HTML文件、CSS文件、js文件,同样的创建方式,只是后缀名不同。
New File - Other -Empty
创建HTML文件后缀名为:html,创建css文件后缀名为css,创建js文件后缀名为:js
创建HTML文件、CSS文件、js文件
这是创建完成后的样子
创建完成
3.在HTML文件,css文件,js文件中写入我们的代码。
在HTML文件中写入一些元素
!DOCTYPE html
html
head lang="zh"
meta charset="UTF-8"
title第一个HTML/title
link rel="stylesheet" type="text/css" href="index1.css"
script type="text/javascript" src="index1.js"/script
/head
body
h1我是HTML/h1
p id = "p"p标签/p
img id = "img" src = "image.png" alt = "百度LOGO"br/
a id = "a" href="[]()"我要到百度/a
br/br/br/
button onclick = "hello()"点击我弹出hello/button
/body
/html
在css文件中改变元素的属性
#p{
color:red;
}
#img{
width:120px;
height:50px;
}
#a{
color:yellow;
}
在js文件中写一个弹窗的函数
function hello(){
alert("hello");
}
这样我们的这三个文件就都写好了,可以通过webView来加载了 。
4.通过webView来加载这三个文件
在viewController的viewDidLoad方法中写入一下代码