一、问题
用XCODE5新建工程,COPY老工程代码,编译出现以下错误:
ARC forbids explicit message send of 'release'
二、解决
工程-->"Build Settings"-->找到Objective-C Automatic Reference Counting项-->将它的值设置为NO。
再次编译,就没这个错误了。
在AppDelegate.h中
#import
#import
#import "ViewController.h"
@class ViewController;
@interface AppDelegate : UIResponder <</span>UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ViewController *viewController;
@end
在AppDelegate.m中
#import "AppDelegate.h"
#import "ViewController.h"
@implementation AppDelegate
@synthesize viewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
在ViewController中
#import
#import
@interface ViewController : UIViewController <</span>AVAudioPlayerDelegate>
{
UILabel *label;
UISlider *slider;
UISwitch *Switch;
//int dir;
AVAudioPlayer *player;
}
//@property int dir ;
@property(nonatomic,strong)UILabel*label;
@property(nonatomic,strong)UISlider *slider;
@property(nonatomic,strong) UISwitch *Switch;
@property(nonatomic,strong)AVAudioPlayer *player;
@property(nonatomic,strong)IBOutlet UISlider *m_volume;
-(IBAction)sliderChanged:(UISlider*)sender;
//
- (IBAction)musicSwitch:(id)sender;
-(IBAction)changeVolume:(id)sender;
-(void)playAudioFile:(NSString *)soundFileName;
@end
#import "ViewController.h"
#import "AppDelegate.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize label;
@synthesize slider;
@synthesize Switch;
@synthesize player;
@synthesize m_volume;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
label=[[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 100)];
label.text=@"50";
[self.view addSubview:label];
[slider addTarget:self action:@selector(sliderChange:)forControlEvents:UIControlEventEditingChanged];
[slider addTarget:self action:@selector(switchChange:)forControlEvents:UIControlEventEditingChanged];
[self playAudioFile:@"05 05.Forever Love副本"];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//让tabel里面的数字由1到100内增减
-(IBAction)sliderChanged:(UISlider*)sender
{
slider=(UISlider*)sender;
// int progressAsInt=(int)(slider.value+0.5f);
int progressAsInt=[slider value]*100;
NSString *newText=[[NSString alloc]initWithFormat:@"%d",progressAsInt ];
label .text=newText;
//[newText release];
}
//[[NSNotificationCenter defaultCenter] addObserver:self
//selector:@selector(volumeChanged:)
//name:@"AVSystemController_SystemVolumeDidChangeNotification"
//object:nil];
//实现协议方法
-(void)audioPlayerBeginInterruption:(AVAudioPlayer *)player
{
//播放器被中断的时候让音乐暂停
[self.player pause];
}
//实现协议方法
-(void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags
{
//结束中断返回到这个程序的时候让音乐继续播放
[self.player play];
}
//播放音乐
-(void)playAudioFile:(NSString *)soundFileName{
NSString *fileName=[[NSBundle mainBundle]pathForResource:soundFileName ofType:@"mp3"];
if ([[NSFileManager defaultManager]fileExistsAtPath:fileName]) {
NSURL *fileUrl=[NSURL fileURLWithPath:fileName];
NSError *err=nil;
player=[[AVAudioPlayer alloc]initWithContentsOfURL:fileUrl error:&err];
if (!player) {
//问题处理
}
else{
//让音乐播放完之后继续循环播放
[player setNumberOfLoops:-1];
//设置事件委派
[player setDelegate:self];
//调节音量(范围从0到1)
player.volume=0.5;
//准备buffer,减少播放延时的时间
[player prepareToPlay];
//播放音乐
[player play];
//[player playAtTime:1];
}
}
else{
NSLog(@"没有找到文件");
}
}
- (IBAction)musicSwitch:(id)sender
{
UISwitch *s=(UISwitch *)sender;
if ([s isOn]==YES) {
if (self.player.playing==NO) {
[self.player play];
}
}
else{
if (self.player.playing==YES) {
[self.player pause];
}
}
}
-(IBAction)changeVolume:(id)sender
{
if (self.player.playing) {
float value= m_volume.value;
player.volume=value;
}
}
@end
为了建立交互站点,你需要使用数据库来存储来自访问者的信 息。例如,你要建立一个职业介绍服务的站点,你就需要存储诸如个 人简历,所感兴趣的工作等等这样的信息。创建动态网叶也需要使用 数据库,如果你想显示符合来访者要求的最好的工作,你就需要从数 据库中取出这份工作的信息。你将会发现,在许多情况下需要使用数 据库。
在这一章里,你将学会怎样使用“结构化查询语言”(SQL〕来操 作数据库。SQL 语言是数据库的标准语言。在 Active Sever Pages 中, 无论何时你要访问一个数据库,你就要使用 SQL 语言。因此,掌握好 SQL 对 ASP 编程是非常重要的。
注意:
你可以把“SQL”读作“sequel”,也可以按单个字母的读音读作 S-Q-L。 两种发音都是正确的,每种发 音各有大量的支持者。在本书里,认为“SQL”读作“sequel”。
通过这一章的学习,你将理解怎样用 SQL 实现数据库查询,你将 学会怎样使用这种查询从数据表中取出信息,最后,你将学会怎样设 计和建立自己的数据库。
注意:
通过下面几章对 SQL 的介绍,你将对 SQL 有足够的了解,从而可 以有效地使用 Active Sever Pages。但是,SQL 是一种复杂的语言, 本书不可能包括它的全部细节。要全面掌握 SQL 语言,你需要学习在 Microsoft SQL Sever 中使用 SQL。你可以到附近的书店去买一本 Microsoft SQL Sever 6.5。
SQL 介绍:
本书假设你是在 SQL 操作 Microsoft SQL Sever 的数据库。你
也可以用 SQL 操作许多其它类型的数据库。SQL 是操作数据库的标准 语言。(事实上,关于 SQL 语言有一个专门的 ANSI 标准〕
注意:
不要在你的站点上试图用 Microsoft Access 代替 Microsoft SQL Sever。SQL Sever 可以同时服务于许多用户,如果你希望你的站点 有较高的访问率,MS Access 是不能胜任的。
在学习 SQL 的细节之前,你需要理解它的两大特点。一个特点容 易掌握,另一个掌握起来有点困难。
第一个特点是所有 SQL 数据库中的数据都存储在表中。一个表由 行和列组成。例如,下面这个简单的表包括 name 和 e-mail address:
Name Email Address .......................................................
......... Bill Gates
有三行,每一行包含一组数据。一行中的数据组合在一起称为一条记 录。
无论何时你向表中添加新数据,你就添加了一条新记录。一个数 据表可以有几十个记录,也可以有几千甚至几十亿个记录。虽然你也 许永远不需要存储十亿个 Email 地址,但知道你能这样做总是好的, 也许有一天你会有这样的需要。
你的数据库很有可能包含几十个表,所有存储在你数据库中的信 息都被存储在这些表中。当你考虑怎样把信息存储在数据库中时,你 应该考虑怎样把它们存储在表中。
SQL 的第二个特点有些难于掌握。这种语言被设计为不允许你按 照某种特定的顺序来取出记录,因为这样做会降低 SQL Sever 取记录 的效率。使用 SQL,你只能按查询条件来读取记录。
当考虑如何从表中取出记录时,自然会想到按记录的位置读取它 们。例如,也许你会尝试通过一个循环,逐个记录地扫