obj-c编程15[Cocoa实例01]:一个会发声的随机数生成器
哇!终于到了obj-c编程系列的第15篇喽,一路走过来满不容易的哦!(怎么个意思,这才哪到哪啊!
),为了能够更好的练习obj-c在Cocoa框架上的编程,接下来会以N篇Cocoa实例的博文来巩固和记忆前面和新学到的东西啊!
这15“章”的第1篇,我用一个简单的mac os x程序来开头吧,使用Xcode6beta(以后均称为x6b)编写,主要为Random类,其方法seed与按钮"reset random seed"绑定,方法generate与按钮"show rand number"绑定;其实例变量text_field与NSTextFieldCell控件绑定。为了增加趣味性,每当按下按钮会随机挑选系统中存在的一种语句报随机数,不多说了,下面上代码:
comm.h
// // comm.h // mac_test // // Created by kinds on 14-7-4. // Copyright (c) 2014年 kinds. All rights reserved. // #import <Foundation/Foundation.h> #define msg(...) NSLog(__VA_ARGS__)
Random.h
//
// Random.h
// mac_test
//
// Created by kinds on 14-7-4.
// Copyright (c) 2014年 kinds. All rights reserved.
//
#import "comm.h"
#import <Cocoa/Cocoa.h>
@interface Random : NSObject{
IBOutlet NSTextField *text_field;
}
-(IBAction)seed:(id)sender;
-(IBAction)generate:(id)sender;
@end
Random.m
//
// Random.m
// mac_test
//
// Created by kinds on 14-7-4.
// Copyright (c) 2014年 kinds. All rights reserved.
//
#import "Random.h"
@implementation Random{
NSSpeechSynthesizer *speech;
NSArray *voices;
}
-(id)init{
self = [super init];
if(self){
speech = [[NSSpeechSynthesizer alloc] initWithVoice:nil];
voices = [NSSpeechSynthesizer availableVoices];
msg(@"%@",voices);
}
return self;
}
-(void)set_voice{
int idx = (int)(random() % [voices count]);
[speech setVoice:[voices objectAtIndex:(NSUInteger)idx]];
}
-(IBAction)generate:(id)sender{
int i = (int)(random() % 100000000000) + 1;
msg(@"i = %d",i);
[text_field setIntValue:i];
[self set_voice];
[speech startSpeakingString:[NSString stringWithFormat:@"%i",i]];
}
-(IBAction)seed:(id)sender{
srandom((unsigned)time(NULL));
NSString *str = @"the seed is reseted!";
[text_field setStringValue:str];
[speech startSpeakingString:str];
}
-(void)awakeFromNib{
NSDate *now = [NSDate date];
[text_field setObjectValue:now];
}
@end
窗口布局如下:
程序执行界面如下,我恨不得做一个带声音的视频(看来本猫想多了):
obj-c编程15[Cocoa实例01]:一个会发声的随机数生成器的更多相关文章
- [原创]obj-c编程15[Cocoa实例02]:KVC和KVO的实际运用
原文链接:obj-c编程15[Cocoa实例02]:KVC和KVO的实际运用 我们在第16和第17篇中分别介绍了obj-c的KVC与KVO特性,当时举的例子比较fun,太抽象,貌似和实际不沾边哦.那么 ...
- obj-c编程15[Cocoa实例02]:KVC和KVO的实际运用
我们在第16和第17篇中分别介绍了obj-c的KVC与KVO特性,当时举的例子比较fun,太抽象,貌似和实际不沾边哦.那么下面我们就用一个实际中的例子来看看KVC与KVO是如何运用的吧. 该例中用到了 ...
- obj-c编程15[Cocoa实例03]:MVC以及归档化演示样例
前面的博文里介绍了归档和解档,这里我们把它实际应用到一个简单的代码中去,将它作为一个多文档应用程序的打开和保存的背后支持.另外这里介绍一下MVC思想,这个在不论什么语言里都会有,它是一种设计思想,主要 ...
- obj-c编程15[Cocoa实例04]:基于Core Data的多文档程序示例[未完待续]
上一个例子我们使用的模式数据实际上是基于一个Person数组,现在我们看一下如何使用Cocoa中的Core Data框架支持,几乎不用写一行代码,完成模式数据的建立. 我们这里模式的元素使用的是Car ...
- obj-c编程15[Cocoa实例03]:MVC以及归档化示例
前面的博文里介绍了归档和解档,这里我们把它实际应用到一个简单的代码中去,将它作为一个多文档应用程序的打开和保存的背后支持.另外这里介绍一下MVC思想,这个在任何语言里都会有,它是一种设计思想,主要可以 ...
- Cocoa练习01:一个简单的Todo list程序
写一个简单的todo list程序,界面如下图: 在TextField区域输入文字,点击Add按钮会将文字显示在下面的TableView列表中.TableView列表有2列,第一列是文字的输入时间:第 ...
- Linux编程之《只运行一个实例》
概述 有些时候,我们要求一个程序在系统中只能启动一个实例.比如,Windows自带的播放软件Windows Medea Player在Windows里就只能启动一个实例.原因很简单,如果同时启动几个实 ...
- Dart编程实例 - 第一个Dart程序
Dart编程实例 - 第一个Dart程序 main() { print("Hello World!"); } 本文转自:http://codingdict.com/article/ ...
- C#网络编程TCP通信实例程序简单设计
C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试 ...
随机推荐
- 创建银行分行的API
DECLARE p_api_version NUMBER := 1.0; p_init_msg_list VARCHAR2(1) := 'F'; v_bank_id NUMBER := 530705; ...
- 从二进制数据流中构造GDAL可以读取的图像数据(C#)
在上一篇博客中,讲了一下使用GDAL从文件流中构造一个GDAL可以识别的数据来进行处理.原以为这个接口在C#中没有,仔细看了下GDAL库中源码,发现C#版本也有类似的函数,下面是GDAL库中的一个C# ...
- 控制成本,控制成本知识点,挣值和实际成本、EAC,ETC.TCPI解析表
- Android绘图基础Paint和Canvas介绍-android学习之旅(六十一)
canvas介绍 Paint类介绍 代码示例 效果图
- android下在屏幕适配小总结
为什么要屏幕适配?为此我就不说了,网上处理方法要么让你用几套不同分辨率的图片,要么写几套布局文件,要么就是在xml中写dip(这个还是可以的),前面两种感觉过程工作量太大了,由加载大图片的优化思想 同 ...
- Java初级面试题
//1.请问执行下面的程序大致会输出类似什么内容? public class TestThisToString{ public String toString(){ return "my m ...
- volatile适用场合
volatile适用场合 要在多线程中安全的适用volatitle变量,必须同时满足: 1.对变量的写入操作不依赖其当前值 不满足:number++.count = count * 5等 ...
- Android项目-高考作文-使用ORMLite抽象公共的Dao层
1, 定义统一的Dao接口 public interface IDao<T> { public abstract T getSingleById(int id); public abstr ...
- List常用整理
长期更新,主要记录List的各种常用操作整理. 对List进行排序 // Collections.sort(重写toString()进行排序区分) List<ObjectName ...
- C#之DirectoryInfo操作
在C#中的System.IO命名空间下有大量的库供我们使用,下面一起来看一下DirectoryInfo的使用吧. code: using System; using System.Collection ...