1.

INSTALL PLUGIN mysqlx SONAME 'mysqlx.so'

 


2. boost

 



boost::shared_ptr< MySQL_Driver > newDriver;

newDriver.reset(new MySQL_Driver(dummy));
driver[dummy] = newDriver;

return newDriver.get();
...
MySQL_Driver::MySQL_Driver(const ::sql::SQLString & clientLib)
{
try {
proxy.reset(::sql::mysql::NativeAPI::createNativeDriverWrapper(clientLib));
} catch(std::runtime_error & e) {
throw sql::InvalidArgumentException(e.what());
}
}
...
/* {{{ createStMysqlWrapper() */
NativeDriverWrapper *
createNativeDriverWrapper(const SQLString & clientFileName)
{
return new MySQL_NativeDriverWrapper(clientFileName);
}
/* }}} */


/* {{{ MySQL_NativeDriverWrapper::MySQL_NativeDriverWrapper() */
MySQL_NativeDriverWrapper::MySQL_NativeDriverWrapper(const ::sql::SQLString & clientFileName)
: api(::sql::mysql::NativeAPI::getCApiHandle(clientFileName))
{
}
/* }}} */
...
boost::shared_ptr< IMySQLCAPI > getCApiHandle(const sql::SQLString & name)
{
#ifdef MYSQLCLIENT_STATIC_BINDING
return LibmysqlStaticProxy::theInstance();
#else


 

https://codeload.github.com/mysql/mysql-connector-cpp/tar.gz/1.1.9

 

3.



import UIKit

class ViewController: UIViewController {
var finishedCallBack: ( (dataString: String) -> () )?
override func viewDidLoad() {
super.viewDidLoad()

//解决方式三: [unowned self] 跟 _unsafe_unretained 类似
loadData { [unowned self] (dataString) -> () in
print("\(dataString) \(self.view)")
}
}

func method2() {
//解决方式二: 在swift中 有特殊的写法 [weak self]
loadData { [weak self] (dataString) -> () in

//以后在闭包中中 使用self 都是若引用的
print("\(dataString) \(self?.view)")
}
}

func method1() {
// 解决方式一: weak , OC中类似方法__weak
weak var weakSelf = self
loadData { (dataString) -> () in
print("\(dataString) \(weakSelf?.view)")
}
}